【问题标题】:How to get the exit status of a Java program in Windows batch file如何在 Windows 批处理文件中获取 Java 程序的退出状态
【发布时间】:2010-10-27 14:07:24
【问题描述】:

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

【问题讨论】:

    标签: java windows batch-file exit-code


    【解决方案1】:

    使用%ERRORLEVEL%。您不喜欢批处理文件的简洁明了吗? :)

    【讨论】:

      【解决方案2】:

      类似:

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

      重要的是让它成为批处理文件的绝对下一行,以避免错误级别被覆盖:)

      请注意,如果您使用

      IF ERRORLEVEL number
      

      批处理文件的“特征”,它的意思是“如果错误级别大于或等于number” - 它不是基于相等的。我以前被那个咬过:)

      【讨论】:

      • 我对这个答案有一点小问题...... AFAIK,你不能在 set 命令中使用空格,所以应该设置 exitcode=%ERRORLEVEL%。无论如何,做出这种改变对我有用。
      【解决方案3】:

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

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

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

      永远不会失败...

      【讨论】:

        【解决方案4】:

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

        要使 %ERRORLEVEL% 起作用,您需要在 Windows 中激活 命令扩展(这是默认设置)。
        对于一个会话:

        cmd /E:on
        

        或永久保存在注册表中

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

        更多详情:

        cmd /?
        

        []]

        【讨论】:

          【解决方案5】:

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2012-12-25
            • 2015-08-14
            • 2012-01-19
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2022-11-10
            相关资源
            最近更新 更多