Check if process returns 0 with batch file Check if process returns 0 with batch file windows windows

Check if process returns 0 with batch file


ERRORLEVEL will contain the return code of the last command. Sadly you can only check >= for it.

Note specifically this line in the MSDN documentation for the If statement:

errorlevel Number

Specifies a true condition only if the previous program run by Cmd.exe returned an exit code equal to or greater than Number.

So to check for 0 you need to think outside the box:

IF ERRORLEVEL 1 GOTO errorHandlingREM no error here, errolevel == 0:errorHandling

Or if you want to code error handling first:

IF NOT ERRORLEVEL 1 GOTO no_errorREM errorhandling, errorlevel >= 1:no_error

Further information about BAT programming: http://www.ericphelps.com/batch/Or more specific for Windows cmd: MSDN using batch files


How to write a compound statement with if?

You can write a compound statement in an if block using parenthesis. The first parenthesis must come on the line with the if and the second on a line by itself.

if %ERRORLEVEL% == 0 (    echo ErrorLevel is zero    echo A second statement) else if %ERRORLEVEL% == 1 (    echo ErrorLevel is one    echo A second statement) else (   echo ErrorLevel is > 1   echo A second statement)


This is not exactly the answer to the question, but I end up here every time I want to find out how to get my batch file to exit with and error code when a process returns an nonzero code.

So here is the answer to that:

if %ERRORLEVEL% NEQ 0 exit %ERRORLEVEL%