2013-01-04 52 views
0

預期的結果如下腳本:PERMPING如果用戶按下P,或PINGLOOP(如果用戶按下T鍵)。但是,不管用戶按下什麼按鈕,腳本回顯均爲。任何想法是什麼給?DOS腳本錯誤級別與IF語句的錯誤行爲

CHOICE /C:PT /N /M "Ping permanently (P) or temporarily (T) (%pingTimes% times)?" 
echo %ERRORLEVEL% 
IF ERRORLEVEL 1 ECHO PERMPING 
IF ERRORLEVEL 2 ECHO PINGLOOP 

回答

1

我懷疑你不是在精確地報告你的代碼的結果。如果按下了P,則已經發布的代碼應該同時打印,並且只有在按下T時纔打印PINGLOOP。行爲是由於IF ERRORLEVEL語句的工作方式所致,正如幫助中所解釋的。要獲得任何命令的幫助,只需從命令提示符輸入HELP commandNamecommandName /?即可。在你的情況,你可以使用IF /?看到下面

Performs conditional processing in batch programs. 

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種選擇,使你的代碼工作:

測試按照遞減數值順序和使用條件的ELSE子句

CHOICE /C:PT /N /M "Ping permanently (P) or temporarily (T) (%pingTimes% times)?" 
echo %ERRORLEVEL% 
IF ERRORLEVEL 2 (
    ECHO PINGLOOP 
) ELSE IF ERRORLEVEL 1 (
    ECHO PERMPING 
) 

或使用IF %ERRORLEVEL%==N

CHOICE /C:PT /N /M "Ping permanently (P) or temporarily (T) (%pingTimes% times)?" 
echo %ERRORLEVEL% 
IF %ERRORLEVEL% == 1 ECHO PERMPING 
IF %ERRORLEVEL% == 2 ECHO PINGLOOP 
+0

我簡單的錯誤了我的腦海裏可憐猛然一驚!感謝修復,dbenham! –