2016-12-14 102 views
0

我有這個代碼的問題,它應該只執行一個動作,當正確的輸入給出。我不能讓我的批量小遊戲工作

enter code here 

@echo off 

echo I want to play a game. Do you? 

set /P INPUT=[Y/N]: %=% 
If %INPUT%=="Y" goto YES 
If %INPUT%=="y" goto YES 
If %INPUT%=="N" goto NO 
If %INPUT%=="n" goto NO 

:NO 
echo FOOL! 
goto end 

:YES 
echo Good, good... 
goto end 

:end 

PAUSE 

但是,我給的輸入沒有什麼不同,還有像「h」這樣的字母會引發反應。它會每次執行「NO」回顯。這是因爲它是choise部分之後的第一個代碼。有沒有人有一個想法如何解決這個問題?

+0

'%=%'是什麼?它沒有任何意義...... – aschipfl

回答

1

你錯過了引號:

If "%INPUT%"=="Y" goto YES 
If "%INPUT%"=="y" goto YES 
If "%INPUT%"=="N" goto NO 
If "%INPUT%"=="n" goto NO 

否則你可以比較Y與 「Y」。

0

If "%INPUT%"=="n" goto NO 

後,您需要

goto somewhere 

否則,cmd簡單地通過線繼續進行處理,行,直到它到達一個gotoexitend-of-file

:somewhere應該在ypu do you want to play提示之前。

順便說一句,你可以使用

if /i "..... 

,使比較不區分大小寫,並且

"%input:~0,1%" 

將返回字符串的第一個字符(所以類似這樣的回覆「黃釉」將返回y

0

那麼爲了實現你想要的,需要進行以下修改。

這裏是你程序的原代碼:

@echo off 

echo I want to play a game. Do you? 

set /P INPUT=[Y/N]: %=% 
If %INPUT%=="Y" goto YES 
If %INPUT%=="y" goto YES 
If %INPUT%=="N" goto NO 
If %INPUT%=="n" goto NO 

:NO 
echo FOOL! 
goto end 

:YES 
echo Good, good... 
goto end 

:end 

PAUSE 

這裏是我的代碼所做的修改,使其運行更加平穩:

 echo off 
    goto :menu 
    cls 

    :menu 
    cls 
    echo I want to play a game. Do you? 
    echo[ 
    set /P INPUT=[Y/N]: %=% 
    If %INPUT% equ Y goto :YES 
    If %INPUT% equ y goto :YES 
    If %INPUT% equ N goto :YES 
    If %INPUT% equ n goto :YES 
    else goto :NO 

    :NO 
    cls 
    echo FOOL! 
    pause 
    goto end 

    :YES 
    echo Good, good... 
    goto end 

    :end 

我假設基礎上,問您是否要求以下輸入(Y,y,N,n)生成結果,其他內容將轉到:代碼的否部分?你的問題不是很詳細。

+0

這是真的,感謝您的答覆反正,該代碼確實運行了很多,但所有其他輸入不是「Y,N,Y,N」應該關閉程序。 –

+0

我編輯了代碼,並將「Y,N,y,n」設置爲:YES。希望這有助於! – PryroTech