2014-05-18 109 views
3

我在寫一個小程序,但我有一個if else語句的問題。批處理如果其他語句不工作

@echo off 
set /p points= 
echo %points% 
echo 1x5= 
set /p 15= 
if %15%==5 ( 
    echo well done! 
    set /a points=%points%+1 
) else (echo wrong!) 
pause 
echo %points% 
pause 

即使我填寫了一個錯誤的答案,它仍然給我的觀點1分,並說「幹得好!」

(BTW:有一些問題,輸入代碼,不要現在如果你將能夠閱讀它)

回答

3

當調用批處理文件時的參數包含在命令行中,它被引用代碼爲%1,%2,...代表第一,第二...參數。

在您的代碼中,當您編寫if %15%==5 ...時,%15%被解釋爲批處理文件的第一個參數(%1),後跟一個由解析器丟棄的5和非轉義的非配對百分號。因此,如果批處理文件沒有輸入參數和%1是空的,你如果代碼被作爲if 5==5 ...

執行作爲一般recomendation,在批處理文件變量「應該」從來沒有以數字開頭,因爲他們將被視爲輸入參數。

0
@echo off 
setlocal enableDelayedExpansion 
set /p points= 
echo %points% 
echo 1x5= 
set /p 15= 
if !15!==5 ( 
    echo well done! 
    set /a points=!points!+1 
) else (echo wrong!) 
pause 
echo !points! 
endlocal 
pause 

MC MD解釋了爲什麼你的代碼不起作用。這是一種使它工作的方法。