我在此代码上存在问题,只有在给出正确的输入时,它才能执行操作。
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"之类的字母也会触发反应。它每次都会执行"否"回声。这是因为它是选择部分之后的第一个代码。有人知道如何解决此问题吗?
您错过了报价:
If "%INPUT%"=="Y" goto YES
If "%INPUT%"=="y" goto YES
If "%INPUT%"=="N" goto NO
If "%INPUT%"=="n" goto NO
其他您将y与" y"进行比较。
If "%INPUT%"=="n" goto NO
您需要
goto somewhere
否则,cmd
只是按行继续处理,直到达到goto
或exit
或end-of-file
。
:somewhere
应该在ypu do you want to play
提示之前。
顺便说一句,您可以使用
if /i ".....
使比较案例不敏感,
"%input:~0,1%"
将返回字符串的第一个字符(因此,诸如" yello"之类的响应将返回y
)
良好,以实现需要以下修改才能实现这一目标。
这是您编程的原始代码:
@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)生成结果的问题,而其他任何内容都不会:没有代码的部分?您的问题并没有真正详细。