pugmarx
pugmarx

Reputation: 7423

How to get the exit status of a Java program in Windows batch file

Analogous to the $? in Linux, is there a way to get the exit status of a program in a Windows batch file (.bat)?
Say for example the program has a System.exit(0) upon successful execution, and a System.exit(1) upon a failure, how do I trap these exit values in a .bat file?

Upvotes: 25

Views: 40530

Answers (5)

Jon Skeet
Jon Skeet

Reputation: 1499860

Something like:

java Foo
set exitcode=%ERRORLEVEL%
echo %exitcode%

It's important to make this the absolute next line of the batch file, to avoid the error level being overwritten :)

Note that if you use the

IF ERRORLEVEL number

"feature" of batch files, it means "if the error level is greater than or equal to number" - it's not based on equality. I've been bitten by that before now :)

Upvotes: 29

user85421
user85421

Reputation: 29680

mostly answering bulgar's question, but complementing the other answers:

for %ERRORLEVEL% to work you need to have the command extensions activated in Windows (it's the default).
For one session:

cmd /E:on

or permanently in the registry

 HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\EnableExtensions = 0x01

for more details:

cmd /?

[]]

Upvotes: 1

JesperE
JesperE

Reputation: 64404

Raymond Chen has a good blog post named ERRORLEVEL is not %ERRORLEVEL%. Worth checking out.

Also worth noting is that the REM command which most people think of as comments, really aren't. The REM command is a nop command which always succeeds. After a REM, the error level is always 0. So

willalwaysfail.bat
REM unless you insert a comment after it
if errorlevel 1 goto fail

will never fail...

Upvotes: 20

dfa
dfa

Reputation: 116314

Most of the usual external command operations return ERRORLEVEL 0 and this usually (but NOT invariably) indicates that no error was encountered:

c:\> dir
...
c:\> echo %ERRORLEVEL%

Upvotes: 0

Matthew Flaschen
Matthew Flaschen

Reputation: 284786

Use %ERRORLEVEL%. Don't you love how batch files are clear and concise? :)

Upvotes: 28

Related Questions