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%