2015-11-23 15 views
1

所以,我有一個批處理文件中的set/p事物。對於用戶來說,他們必須輸入「2」。我似乎無法在任何地方找到我的具體問題。「if」批處理語句:文件崩潰時輸入應該是一個數字,而是有空格的話

@echo off 
echo "What is 1+1" 

set /p oneplusone=Type Answer Here: 

if %oneplusone%==2 goto correct 
if %oneplusone% neq 2 goto incorrect 

:correct 
cls 
echo Correct! 
pause 
goto youranswer 

:incorrect 
cls 
echo Wrong. 
pause 
goto youranswer 

:youranswer 
cls 
echo You answered: %oneplusone% 

現在,如果用戶鍵入不帶空格的數量/字,一切正常了,它表明你的答案被通緝。

但是,例如,如果用空格鍵入「hi there」之類的內容,批處理文件會立即關閉。只有當答案需要是一個數字時,纔會發生這種情況,並且輸入涉及空間的東西。

任何幫助?

在此先感謝。

+0

更改您的IF語句中使用引號。 '如果「%oneplusone%」==「2」轉到正確# – Squashman

+1

讚美你,squashman! –

+0

使用'=='比較和''「'強制字符串比較;你可以聲明'set/A oneplusone = oneplusone'將該值轉換爲一個數字,然後使用'if%oneplusone%equ 2' ... – aschipfl

回答

0

可以檢查你的答案是許多使用此:

set /a test=%oneplusone%*1 
if %test%==0 goto notValid 

,並有另一個標籤,使您的代碼此

@echo off 
echo "What is 1+1" 

set /p oneplusone=Type Answer Here: 
set /a test=%oneplusone%*1 
if %test%==0 goto notValid 
if %oneplusone%==2 goto correct 
if %oneplusone% neq 2 goto incorrect 

:correct 
cls 
echo Correct! 
pause 
goto youranswer 

:incorrect 
cls 
echo Wrong. 
pause 
goto youranswer 

:notValid 
cls 
echo Your input is not valid 

pause 
goto youranswer 

:youranswer 
cls 
echo You answered: %oneplusone% 
相關問題