Get error code from within a batch file

后端 未结 3 1327
被撕碎了的回忆
被撕碎了的回忆 2020-12-05 09:25

I have a batch file that runs a couple executables, and I want it to exit on success, but stop if the exit code <> 0. How do I do this?

相关标签:
3条回答
  • 2020-12-05 10:04

    A solution better than Hellion's answer is checking the %ERRORLEVEL% environment variable:

    IF %ERRORLEVEL% NEQ 0 (
      REM do something here to address the error
    )
    

    It executes the IF body, if the return code is anything other than zero, not just values greater than zero.

    The command IF ERRORLEVEL 1 ... misses the negative return values. Some progrmas may also use negative values to indicate error.

    BTW, I love Cheran's answer (using && and || operators), and recommend that to all.

    For more information about the topic, read this article

    0 讨论(0)
  • 2020-12-05 10:13

    Sounds like you'll want the "If Errorlevel" command. Assuming your executable returns a non-0 exit code on failure, you do something like:

    myProgram.exe
    if errorlevel 1 goto somethingbad
    echo Success!
    exit
    :somethingbad
    echo Something Bad Happened.
    

    Errorlevel checking is done as a greater-or-equal check, so any non-0 exit value will trigger the jump. Therefore, if you need to check for more than one specific exit value, you should check for the highest one first.

    0 讨论(0)
  • 2020-12-05 10:13

    You can also use conditional processing symbols to do a simple success/failure check. For example:

    myProgram.exe && echo Done!
    

    would print Done! only if myProgram.exe returned with error level 0.

    myProgram.exe || PAUSE
    

    would cause the batch file to pause if myProgram.exe returns a non-zero error level.

    0 讨论(0)
提交回复
热议问题