我无法让我的批处理迷你游戏上班



我在此代码上存在问题,只有在给出正确的输入时,它才能执行操作。

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只是按行继续处理,直到达到gotoexitend-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)生成结果的问题,而其他任何内容都不会:没有代码的部分?您的问题并没有真正详细。

最新更新