par*_*uat 5 cmd batch-file errorlevel
如果我创建一个名为temp.bat的批处理脚本(例如),其中包含:
exit /b 1
Run Code Online (Sandbox Code Playgroud)
当我以各种方式运行它时,我的32位XP系统与64位XP系统的行为不同.
在32位:
> temp.bat
> echo %ERRORLEVEL%
1
> cmd /c temp.bat
> echo %ERRORLEVEL%
0
Run Code Online (Sandbox Code Playgroud)
在64位:
> temp.bat
> echo %ERRORLEVEL%
1
> cmd /c temp.bat
> echo %ERRORLEVEL%
1
Run Code Online (Sandbox Code Playgroud)
我搜索了cmd.exe选项,但我无法找到任何控制它如何从批处理脚本传播错误级别信息的选项.在这一点上,我无法找到任何合理的解释.
您必须小心退出/ b,因为它实际上并不能在所有实例中正常工作.例如:
temp.bat&&echo 0||echo 1
如果temp.bat包含exit/b 1,你会希望打印1,但事实并非如此.遗憾的是,真正为批处理文件设置工作退出代码的唯一方法是使用批处理文件中@%COMSPEC% /C exit 1的最后一行