2010-03-04 101 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個錯誤級別。