2010-03-04 69 views
3

是否有一组标准的Window Shell脚本(* .bat文件)返回码?我正在寻找类似于Linux退出代码的东西,其中0 ==成功和非零==失败。 我需要一种编程方式来检查我的shell脚本在执行过程中是否失败。窗口外壳脚本返回码

回答

2

最常见的practive与Unix标准相同,所以0的返回码(也称为批处理文件中的errorlevel)是成功的,而高于0的任何值都是错误。

有找,虽然一些相关陷阱的 - 看看这个指南:

Batch Files - Errorlevels

1

您可以检查ERRORLEVEL值。

的IF外壳语句的帮助,告诉我下面的:

IF [NOT] ERRORLEVEL number command 

    ERRORLEVEL number Specifies a true condition if the last program run 
        returned an exit code equal to or greater than the number 
        specified. 
2

0为失败成功,非0也是Windows批处理命令的惯例。当命令失败时,它将设置ERRORLEVEL,它是一个可以在批处理文件中测试的特殊变量。

if errorlevel 1 goto failure 

只要您不运行其他命令,错误级别就会传递给运行.bat文件的调用方。

1

通常,Windows实用程序在成功时返回0,并且像Linux应用程序一样返回非零错误(通过ERRORLEVEL变量)。不幸的是,没有强制执行的官方“标准”,并不是每个实用程序或脚本都会设置错误级别。

如果您有想要测试返回状态的脚本,请确保脚本使用EXIT /B ##退出,导致错误级别设置为##

0

我更喜欢这种方式:

[run an exe here] 

IF %errorlevel% NEQ 0 (
    CALL :SSH_fail filename.sh %errorlevel% 
) 


:SSH_fail 
    Email.exe "%mailTo%" "%mailProgram% - SSH Failure " "Body: errorlevel:%~2 file name: %~1" 
goto cont 

这样,我知道到底是什么错误级别了。我认为可能会达到250个错误级别。