\
Tips and Tricks
Batch Files
Batch File Tips and Tricks
Meaningful Return Code
At times you may need to worry about the return code of a batch program
as some wrapping process needs to determine successful completion, for
example you may wish to do this if you are running a batch file via a
command processor invoked with the "ExeCa" command.
Generally a return code of 0 is used to indicate success.
Method 1 - Use Always Work/Fail Commands |
This method is useful where you only have two states
(success and failure), a return code of zero indicates success and
anything else indicates failure:
goto ExitRcError
...
:ExitRc0
set SetRc=echo GOOD (this will always work)
goto ExitWithRc
:ExitRcError
set SetRc=.\NoSuchExeToSetRc.EXE (this will never work)
goto ExitWithRc
:ExitWithRc
%SetRc% >nul 2>&1
The code above runs one of two commands, one which will always work
and so generate a return code of zero or one which can never succeed and
so always returns a non-zero RC.
There must be no other statements (even a "REM") after the last
line or the return code will be changed (idiots, they're everywhere...)!
The exit exit command has some parameters. I'm not sure which operating
system first got them, so you may want to be wary if you need to support
older operating systems.
This approach has another major advantage if your invoking process needs
to support other return conditions
(for example success, failure and warning) as specific return codes can
be set.
goto ExitRc123
...
:ExitRc0
@rem exit /B 0
exit 0
:ExitRc123
@rem exit /B 123
exit 123
The command processor (CMD.EXE) doesn't pick up return codes from
an exit with "/B" (idiots, they're everywhere...)! So you should drop
the "/B" to exit the command processor instead (of the batch file).