如何获得以START命令开始的batch file的返回/退出代码?

我试图用start /high运行batch file,仍然得到返回/退出代码,即%ERRORLEVEL% 。 问题似乎是START命令不返回batch file返回的退出代码。

我们有一个简单的batch file来testing名为BatFileThatReturnsOne.bat

BatFileThatReturnsOne.bat的内容是

 EXIT /B 1 

我们这样称呼:

 start /high /wait BatFileThatReturnsOne.bat 

但不pipebatch file返回什么, start的执行都不会有0(零)以外的任何其他值的%ERRORLEVEL%

这一切实际上都是由CloudFormation中的cfn-init调用的,但这可能是不相关的,因为我们可以从命令行窗口重现它。

实际的通话是:

 cmd.exe /C start /high /wait BatFileThatReturnsOne.bat 

如何start%ERRORLEVEL%设置为0(零)以外的内容?

直接从一个cmd窗口或批处理文件,你可以使用

 start /high /wait cmd /c BatFileThatReturnsOne.bat 

但是如果您需要启动cmd实例来执行启动批处理文件的启动命令,则可以使用

 cmd /v /e /c" start /high /wait cmd /c launched.cmd & exit ^!errorlevel^!" 

只需通过EXIT 1更改EXIT /B 1 EXIT 1

正如在关于START /WAIT bat命令的回答中给出的表4中所解释的那样:

 When the started Batch file ends, set ERRORLEVEL = value from 'EXIT number' commmand.