使用這個簡單的C程序來操作的退出代碼:
#include <stdio.h>
main(int argc, char *argv[]) {
if (argc == 2) {
// return integer of argument 1
return strtol(argv[1], NULL, 10);
}
else {
return 0;
}
}
我們可以測試退出代碼在批處理文件像這樣:
test.exe 0
IF ERRORLEVEL 0 PAUSE
條件:0 => 0 == TRUE
當ERRORLEVEL = 0
,暫停將發生因爲邏輯是>=
或大於或等於。這很重要,因爲它不是立即清楚的,條件不是一個==
比較。
請注意,代入1 => 0
也是正確的,因此暫停也會發生。對於任何正數都是如此。
我們只能去下面0
引發了相反的效果:
test.exe -1
IF ERRORLEVEL 0 PAUSE
條件:-1 => 0 == FALSE
由於1
的ERRORLEVEL
通常意味着有一個錯誤,0
沒有錯誤,我們可以在比較條件下增加最小值以得到我們想要的樣子:
test.exe 0
IF ERRORLEVEL 1 PAUSE
條件:-1 => 1 == FALSE
條件:0 => 1 == FALSE
條件:1 => 1 == TRUE
在這個例子中。當ERRORLEVEL
爲1
或更高時,腳本將暫停
請注意,這允許-1
退出代碼與0
相同。如果只想要0
不停頓會怎麼樣?我們可以用一個單獨的語法:
test.exe 0
IF NOT %ERRORLEVEL% EQU 0 PAUSE
條件:-1 != 0 == TRUE
條件:0 != 0 == FALSE
條件:1 != 0 == TRUE
在這個例子中,腳本暫停,如果%ERRORLEVEL%
不是0
我們可以通過使用EQU算子來做到這一點,首先檢查%ERRORLEVEL% EQU 0
,然後NOT算子得到相反的效果,相當於!=
算子。但是,我相信這隻適用於NT機器,而不是簡單的DOS。
參考文獻:
http://chrisoldwood.blogspot.ca/2013/11/if-errorlevel-1-vs-if-errorlevel-neq-0.html http://ss64.com/nt/errorlevel.html
這並沒有爲我工作,因爲如果沒有ERRORLEVEL 0總是返回false作爲ERRORLEVEL總是> = 0。我下面貼一個正確的版本。 – Benja 2011-10-21 13:49:22