如何在Windows批处理文件中获取Java程序的退出状态

时间:2009-05-20 09:37:25

标签: java windows batch-file exit-code

类似于Linux中的$?,是否有办法在Windows批处理文件(.bat)中获取程序的退出状态?
例如,程序在成功执行时有System.exit(0),在失败时有System.exit(1),如何在.bat文件中捕获这些退出值?

5 个答案:

答案 0 :(得分:27)

使用%ERRORLEVEL%。难道你不喜欢批处理文件的清晰和简洁吗? :)

答案 1 :(得分:27)

类似的东西:

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

将此作为批处理文件的绝对下一行非常重要,以避免错误级别被覆盖:)

请注意,如果您使用

IF ERRORLEVEL number

批处理文件的“功能”,表示“如果错误级别大于或等于number” - 它不是基于相等性。在此之前我一直被它咬过:)

答案 2 :(得分:19)

Raymond Chen有一篇名为ERRORLEVEL is not %ERRORLEVEL%的好文章。值得一试。

另外值得注意的是,REM命令被大多数人认为是评论,实际上并非如此。 REM命令是一个nop命令,总是成功。在REM之后,错误级别始终为0.所以

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

永远不会失败......

答案 3 :(得分:1)

主要回答 bulgar 的问题,但补充其他答案:

要使%ERRORLEVEL%正常工作,您需要在Windows中激活命令扩展名(这是默认设置)。
一次会议:

cmd /E:on

或永久在注册表中

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

了解更多详情:

cmd /?

[]]

答案 4 :(得分:0)

大多数常见的外部命令操作返回 ERRORLEVEL 0,这通常(但不是总是)表示没有遇到错误:

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