[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[特效代码] 钉钉 svn钩子 为啥for循环不执行啊

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%
)

以前没接触过批处理,最后的这个for就是不执行,为啥啊

需求大概是某些目录下的svn更改要发送消息到钉钉,str就是这些目录,本来写的是for循环 用%%i去对比%CHANGEDDIRS% 一直不执行,去掉对比,直接for循环也不执行,为啥啊。。。搞了两天了

TOP

set str=cs1
这里的cs1是什么?
你那个for命令的写法它会认为cs1是一个文件
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

代码保存为 C:\test.bat
打开一个CMD窗口,执行命令:
C:\test.bat

这样可以看到详细的报错信息或者线索
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

set str=cs1
这里的cs1是什么?
你那个for命令的写法它会认为cs1是一个文件
Batcher 发表于 2018-6-27 17:33

set str=cs1,cs2,cs3  str表示一串字符串集合,for循环去取这些字段,然后和%CHANGEDDIRS%(修改目录)作比较,如果%CHANGEDDIRS%包含是在这些地址里的,那就执行发送消息的命令。

TOP

新问题
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啊。。。

TOP

已经完成了,可以正常使用了。谢谢管理员的回答
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%)
)

TOP

返回列表