我正在尝试使用start /high
运行批处理文件,但仍然会获得返回/退出代码,即%ERRORLEVEL%
。问题似乎是命令 START 不会返回批处理文件返回的退出代码。
我们有一个简单的批处理文件,用于测试名为BatFileThatReturnsOne.bat
。
BatFileThatReturnsOne.bat
的内容是
EXIT /B 1
我们这样称呼:
start /high /wait BatFileThatReturnsOne.bat
但无论批处理文件返回什么,start
的执行都不会有%ERRORLEVEL%
除0(零)以外的任何内容。
这实际上是由CloudFormation中的cfn-init调用的,但这可能不相关,因为我们可以从命令行窗口重现它。
实际的电话是:
cmd.exe /C start /high /wait BatFileThatReturnsOne.bat
如何让start
将%ERRORLEVEL%
设置为0(零)以外的其他内容?
答案 0 :(得分:5)
直接来自cmd
窗口或您可以使用的批处理文件
start /high /wait cmd /c BatFileThatReturnsOne.bat
但是如果您需要启动cmd
实例来执行启动批处理文件的启动命令,那么您可以使用
cmd /v /e /c" start /high /wait cmd /c launched.cmd & exit ^!errorlevel^!"
答案 1 :(得分:3)
只需按EXIT /B 1
更改EXIT 1
。
正如this answer中关于START /WAIT bat
命令的表4 中所述:
When the started Batch file ends, set ERRORLEVEL = value from 'EXIT number' commmand.