set REPOS=%1
set REV=%2
set tttt=%date:~0,10% %time:~0,8%
for /f "tokens=1,2 delims=:" %%a in ('svnlook author -r %REV% %REPOS%') do (
if not defined AUTHOR set AUTHOR=%%a
)
for /f "tokens=1,2 delims=:" %%a in ('svnlook dirs-changed %REPOS%') do (
if not defined CHANGEDDIRS set CHANGEDDIRS=%%a
)
for /f "tokens=1,2 delims=:" %%a in ('svnlook log -r %REV% %REPOS%') do (
if not defined MESSAGE set MESSAGE=%%a
)
set CONTENT="提交时间:%tttt% \n提交版本:%REV% \n作者:%AUTHOR%\n提交备注:%MESSAGE%\n修改目录:%CHANGEDDIRS% "
set str=cs1
for /f %%i in (%str%) do (
D:\svndd\ddsvn.exe d23d09b22be3c4b0ff17fce576f3e5f53339261da68ab83642eca2233c2c9391 %CONTENT%
)
set str=cs1
这里的cs1是什么?
你那个for命令的写法它会认为cs1是一个文件作者: Batcher 时间: 2018-6-27 17:34
代码保存为 C:\test.bat
打开一个CMD窗口,执行命令:
C:\test.bat
这样可以看到详细的报错信息或者线索作者: wr_yys 时间: 2018-6-28 09:52
set str=cs1
这里的cs1是什么?
你那个for命令的写法它会认为cs1是一个文件
Batcher 发表于 2018-6-27 17:33
set str=cs1,cs2,cs3 str表示一串字符串集合,for循环去取这些字段,然后和%CHANGEDDIRS%(修改目录)作比较,如果%CHANGEDDIRS%包含是在这些地址里的,那就执行发送消息的命令。作者: wr_yys 时间: 2018-6-28 10:19
新问题
set str=cs1,cs2,dingdingcs
for %%i in (%str%) do (
echo %CHANGEDDIRS%|findstr %%i >nul
if %errorlevel% equ 0 D:\svndd\ddsvn.exe d23d09b22be3c4b0ff17fce576f3e5f53339261da68ab83642eca2233c2c9391 %errorlevel%%CHANGEDDIRS%%%i
)
钉钉里机器人发出来的消息
0cs2/cs1
0cs2/cs2
0cs2/dingdingcs
为啥都是0啊。。。作者: wr_yys 时间: 2018-6-28 10:43
已经完成了,可以正常使用了。谢谢管理员的回答
set str=cs1,cs2,dingdingcs
for %%i in (%str%) do (
echo %CHANGEDDIRS%|findstr /L "%%i" >nul
if errorlevel 1 (echo %CHANGEDDIRS%) else (D:\svndd\ddsvn.exe d23d09b22be3c4b0ff17fce576f3e5f53339261da68ab83642eca2233c2c9391 %CONTENT%)
)