我需要一些关于Windows批处理脚本的帮助
我想要实现的目标:
我的尝试:
set REVNO=$(svnlook youngest D:\Subversion\...)
set REVURL=D:\Subversion\...\db\revprops\0\
findstr /m "string_I_am_searching_for" %REVURL%%REVNO%
if %errorlevel%==0 (
start http://webpage
)
为什么我要这样做:
我希望在提交消息后具有特定字符串的提交后启动Hudson CI自动测试(例如Autobuild: true
)
我无法调试我的代码,因为我不熟悉Windows批处理脚本
在我的脚本中,我使用了:
findstr
查找文件是否包含字符串(我知道findstr也可用于变量)如果我的小脚本存在语义问题以及语法问题,我不会感到惊讶,因为正如我已经提到的那样,我之前没有做过那么多批处理脚本
我没有要求,没有规范,因此脚本可以以任何可能的方式实现。所以我愿意接受建议
P.S。我还读到在post-commit
上使用超重程序并不是一个好主意,因为在完成所有操作之前,svn不会将控件返回给用户 - >这不是一个大问题
修改 我通过旁边测试发现我并没有真正获得最新的版本号,而是使用了命令字符串。谷歌搜索后,我发现在Windows中调用一些命令并将结果存储在变量中并不容易。所以我决定用文件存储中间结果。
这就是我的尝试:
cd D:\Subversion\...\hooks
SET OUTPUT=testing
FOR /F "tokens=*" %a in ('revision.bat') do ( SET OUTPUT=%a )
findstr /m "o" D:\Subversion\...\db\revprops\0\%a
if %errorlevel%==0 (
start http://webpage
)
在revision.bat中:
svnlook youngest D:\Subversion\...
现在我在SVN中收到此错误:
post-commit hook failed (exit code 255) with output:
a" ) was unexpected at this time.
我相信这是因为我在错误的时间在错误的地方创建变量a
。但如果我手动运行bat文件,我不会收到此错误
答案 0 :(得分:0)
找到了一种方法 - 在.bat文件中存储中间函数:
-commit.bat交
@ECHO OFF
cd D:\Subversion\...\hooks
SET OUTPUT
FOR /F "tokens=*" %%a in ('revision.bat') do ( SET OUTPUT=%%a )
findstr /m "o" D:\Subversion\...\db\revprops\0\%OUTPUT%
if %errorlevel%==0 (
start http://website
)
revision.bat
svnlook youngest D:\Subversion\...
这是一种解决方法,而不是我认为的解决方案
感谢:https://serverfault.com/questions/245679/store-output-of-windows-command-in-batch-file