我遇到了这段代码的问题,只有在给出正确的输入时才会执行操作。
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"每次都回声。这是因为它是选择部分之后的第一个代码。有人知道如何解决这个问题吗?
答案 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
只是继续逐行处理,直到达到cmd
或goto
或exit
。
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)生成结果,而其他任何内容将转到:代码的哪一部分?你的问题并不是很详细。