How to get the exit status of a Java program in Wi

2019-01-23 02:09发布

问题:

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?

回答1:

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



回答2:

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 :)



回答3:

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...



回答4:

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 /?

[]]



回答5:

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%