我正在尝试使用命令链接一系列 .bat 文件EXIT /B X
以返回成功或失败以及&&
有条件||
地运行下一个 .bat (例如a.bat && b.bat
)。
不管我是否调用EXIT /B 0
或以其他方式结束 a.bat,a.bat && b.bat
之后都会调用 b.bat。我的理解是EXIT /B 0
应该设置ERRORLEVEL=0
,即成功,所以&&
应该继续。与此相反的是,调用EXIT /B 1
应该设置ERRORLEVEL=1
为失败,因此&&
应该停止。我在这里想念什么?
琐碎的例子:
对于非批处理命令,按预期执行:
C:\> echo test|findstr test>NUL && echo yes
yes
C:\> echo test|findstr test>NUL || echo yes
C:\> echo test|findstr nope>NUL && echo yes
C:\> echo test|findstr nope>NUL || echo yes
yes
使用EXIT /B
总是将 a.bat 视为成功:
C:\> echo @EXIT /B 0 > a.bat
C:\> a.bat && echo yes
yes
C:\> a.bat || echo yes
C:\> echo @EXIT /B 1 > a.bat
C:\> a.bat && echo yes
yes
C:\> a.bat || echo yes
我怎样才能退出 a.bat 以便a.bat && b.bat
按a.bat || b.bat
预期运行?
所有命令都在 Windows XP SP3 上的 cmd.exe 中运行。