简体   繁体   中英

How to get return/exit code of a batch file started with START command?

I am trying to run a batch file with start /high and still get the return/exit code, ie %ERRORLEVEL% . The problem seems to be that command START does not return the exit code that the batch file returns.

We have a simple batch file for testing named BatFileThatReturnsOne.bat .

The contents of BatFileThatReturnsOne.bat are

EXIT /B 1

We are calling this as such:

start /high /wait BatFileThatReturnsOne.bat

But no matter what the batch file returns, the execution of start never has a %ERRORLEVEL% of anything other than 0 (zero).

This is all actually called by cfn-init in CloudFormation, but that is probably not relevant because we can reproduce it from a command line window.

The actual call is:

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

How do I get start to set the %ERRORLEVEL% to something other than 0 (zero)?

directly from a cmd window or a batch file you can use

start /high /wait cmd /c BatFileThatReturnsOne.bat

but if you need to start the cmd instance to execute the start command that launchs the batch file then you can use

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

Just change EXIT /B 1 by EXIT 1 .

As explained in the Table 4 given in this answer about START /WAIT bat command:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM