我目前正在尝试扩展我们已经存在的(并且正在工作的)预提交批处理文件以提交到 SVN。第一部分阻止任何没有注释并按预期工作的提交。第二部分是尝试阻止用户提交 SUO 文件,但这目前正在阻止所有提交。
我对 DOs 脚本的理解不是很好,所以我怀疑这可能是我对 FindStr 的使用?
有人可以帮忙吗?
"C:\Program Files\VisualSVN Server\bin\svnlook.exe" log -t %2 %1 | FindStr [a-zA-Z0-9]
IF %ERRORLEVEL% EQU 0 GOTO OK
echo "Commit Comments are Required" >&2
exit 1
:OK
"C:\Program Files\VisualSVN Server\bin\svnlook.exe" diff -t %2 %1 | FindStr /R "[a-zA-Z]\.suo"
IF %ERRORLEVEL% EQU 0 exit 0
echo "SUO files cannot be committed" >&2
exit 1
如果找到某些内容,findstr 返回 0;如果没有找到任何内容,则返回 1。你刚刚倒置了你的支票。
不需要batch-foo,即使在Windows上,shell也是交互式的,所以你可以尝试一下:
>dir | findstr ".sln"
15.01.2009 16:37 33.844 Project.sln
>echo %ERRORLEVEL%
0
>dir | findstr ".slngimpf"
>echo %ERRORLEVEL%
1
顺便说一句,写起来更容易
if errorlevel 0 andthencontinuewithwhatever
这样你的脚本也能稳定地抵御不祥的事情:
set errorlevel=0
这将破坏任何未来以正确的方式打印带有 %errorlevel% 的错误级别的尝试。
(edit)重要提示:我忘了说if errorlevel
语法检查错误级别是否为大于或等于到被测试的值。因此,要正确使用它,您必须始终首先检查最高错误,例如:
someCommand
if errorlevel 10 ...
if errorlevel 9 ...
if errorlevel 0 ...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)