检查过程是否返回0batch file

我想用batch file启动一个进程,如果它返回非零值,则执行其他操作。 我需要正确的语法。

像这样的东西:

::x.bat @set RetCode=My.exe @if %retcode% is nonzero handleError.exe 

作为奖励,您可以考虑回答以下问题,请:)

  • 如何用if写一个复合语句?
  • 如果应用程序My.exe无法启动,因为某些DLL丢失将我的工作? 如果没有,我怎么能检测到My.exe启动失败?

Solutions Collecting From Web of "检查过程是否返回0batch file"

ERRORLEVEL将包含最后一个命令的返回码。 可悲的是你只能检查>=

特别注意在If语句的MSDN文档中的这一行:

错误级别号码

仅当由Cmd.exe运行的上一个程序返回等于或大于Number的退出码时才指定一个真实条件。

所以要检查0,你需要在盒子外面思考:

 IF ERRORLEVEL 1 GOTO errorHandling REM no error here, errolevel == 0 :errorHandling 

或者,如果您想先编写错误处理代码:

 IF NOT ERRORLEVEL 1 GOTO no_error REM errorhandling, errorlevel >= 1 :no_error 

有关BAT编程的更多信息: http : //www.ericphelps.com/batch/或者更具体的Windows cmd : 使用批处理文件的MSDN

如何用if写一个复合语句?

您可以使用圆括号在if块中编写复合语句。 第一个括号必须与if和第二个在一行上。

 if %ERRORLEVEL% == 0 ( echo ErrorLevel is zero echo A second statement ) else if %ERRORLEVEL% == 1 ( echo ErrorLevel is one echo A second statement ) else ( echo ErrorLevel is > 1 echo A second statement ) 

我正在做的项目,我们做这样的事情。 我们使用errorlevel关键字,它看起来像这样:

 call myExe.exe if errorlevel 1 ( goto build_fail ) 

这似乎为我们工作。 请注意,您可以将多个命令放在副本中,如echo或其他任何内容。 另请注意,build_fail被定义为:

 :build_fail echo ********** BUILD FAILURE ********** exit /b 1