我正在尝试使用命令链接一系列 .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 中运行。