我不能让我的批量迷你游戏工作

时间:2016-12-14 13:54:33

标签: batch-file cmd

我遇到了这段代码的问题,只有在给出正确的输入时才会执行操作。

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"每次都回声。这是因为它是选择部分之后的第一个代码。有人知道如何解决这个问题吗?

3 个答案:

答案 0 :(得分:1)

你错过了报价:

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

否则你将Y与" Y"。

进行比较

答案 1 :(得分:0)

之后

(?<=(.{0,10}))(?=abc)

你需要

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

否则,goto somewhere 只是继续逐行处理,直到达到cmdgotoexit

end-of-file应该在ypu :somewhere提示符之前。

顺便说一句,你可以使用

do you want to play

使比较不区分大小写,

if /i ".....

将返回字符串的第一个字符(因此像“yello”这样的响应将返回"%input:~0,1%"

答案 2 :(得分: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)生成结果,而其他任何内容将转到:代码的哪一部分?你的问题并不是很详细。