我正试图在另一个exe成功执行的情况下有条件地从批处理文件中运行exe。
我尝试了几种不同的IF和ERRORLEVEL组合,但似乎都没有效果
"..\..\..\TeamBuildTypes\Current Branch\DatabaseUpdate.exe" -s localhost\sql2008r2
IF %ERRORLEVEL% 1(
"..\..\..\TeamBuildTypes\Current Branch\DatabaseUpdate.exe" -s localhost\sql2008
)
Pause
给我错误
1(此时出乎意料。
我在哪里错了?
答案 0 :(得分:42)
IF ERRORLEVEL ...
是自DOS日以来支持的特殊语法,在WinNT中添加了%ERRORLEVEL%
变量支持。
原始语法的用法如下:
call someapp.exe
if errorlevel 1 goto handleerror1orhigher
echo succuess...
要使用该变量,请使用常规IF语法:if %errorlevel%==0 echo success...
请注意,如果有人%errorlevel%
,set errorlevel=foo
停止工作,并且内部cmd.exe命令可能无法更新。
另一种解决方案是使用&&
:
call someapp.exe && (echo success) || (echo error!)
有(至少)两个已知情况,其中错误级别被破坏,您必须改为使用||
:
答案 1 :(得分:5)
否定错误级别可能会产生问题。尝试这样的事情:
IF '%ERRORLEVEL%'=='0' GOTO OK