2013-07-18 71 views
0

我一直有這個代碼的麻煩一段時間。請看看並告訴我什麼是錯誤的,所以我可以修復它。此代碼將成爲xprize競爭的一部分!爲什麼我的批處理語句不工作?

echo [Math] 
echo. 
echo. 
echo. 
echo   Question 1 
echo. 
echo. 
echo. 
echo  If Mary goes to the market and buys three 
echo  bananas for two dollars each, how much 
echo  did she spend altogether? 
echo. 
echo. 
echo  (A) $3 
echo  (B) $6 
echo  (C) $5 
echo  (D) $1 
echo. 
echo. 
echo. 
set /p ANSWER01=Answer: 
cls 
goto results 


:results 
set /a "COUNTER=0" 

這裏是我無法弄清楚: 我不知道if語句如何改變一個變量的值在

if %ANSWER01%==b(
    set /a "COUNTER=COUNTER+1" 
) 
echo %COUNTER% 
pause 

回答

0

你需要b(

之間的空間

AAMOI,if /i將使匹配不區分大小寫。

+0

@PeterWrite我如何使它所以如果用戶做沒有選擇「b」它是「echo%COUNTER」 – user2593700

+0

如果用戶沒有選擇「b」,那麼你的代碼工作並回顯'counter'(0)的值。然而,最好使用'if/i'%answer01%「==」b「(」來允許用戶簡單地按下'ENTER'。假如用戶沒有嘗試破壞程序,代碼將會工作很開心 - 如果你在'b'和'('之間加上空格,就像我建議的那樣。「 – Magoo

1

您應該使用選擇命令:

Choice /c abcd /m "Answer: " 
set ANSWER01=%errorlevel% 

也爲您的if語句只是做像這樣:

if %ANSWER01% equ 2 set /a "COUNTER=COUNTER+1" 

這會更容易,更好。

注:equ 2是,如果你使用choice命令

0

嗨,就需要啓用延遲擴展選項,並給出一個空間,如果句子括號:

你的代碼是這樣的:

set /a counter=0 

setlocal ENABLEDELAYEDEXPANSION 

echo [Math] 
echo. 
echo. 
echo. 
echo   Question 1 
echo. 
echo. 
echo. 
echo  If Mary goes to the market and buys three 
echo  bananas for two dollars each, how much 
echo  did she spend altogether? 
echo. 
echo. 
echo  (A) $3 
echo  (B) $6 
echo  (C) $5 
echo  (D) $1 
echo. 
echo. 
echo. 
set /p ANSWER01=Answer: 
cls 
goto results 

:results 

if %ANSWER01%==b (
    set /a counter=counter+1 
) 
echo %counter% 
pause 

endlocal 
+0

嗯,不 - 不是這種情況,如果變量在」塊「內被改變,你只需要'delayedexpansion'一系列括號化語句),並且您想要訪問已更改的值(當您需要使用'!var!'而不是'%var%' - '!var!'更改值時,'%var%'爲塊輸入前的值) – Magoo