1

我的问题:我设置了一个带提示和三个 IF 的 VAR 来让选择。第四选择不起作用。我希望如果我在不输入任何内容的情况下按 Enter,它会返回到:MOSTRA。实际上将其留空并在键盘上输入回车返回 GOTO WAS UNEXPECTED 并关闭 CMD。我哪里错了?

:MOSTRA
ECHO Make your choice.
ECHO.
ECHO A) Ok
ECHO B) Ko
ECHO Esci
SET /P choose=Scelta: 
if /I %choose%==A GOTO OK
if /I %choose%==B GOTO KO
if /I %choose%==esci GOTO FINE
if /I %choose%=="" GOTO ERROR


:ERROR
ECHO You type nothing.
ECHO.
GOTO MOSTRA

:KO
ECHO Bad choice
ECHO.
GOTO MOSTRA

:OK
ECHO Right choice
ECHO.
GOTO MOSTRA

:FINE
exit
4

1 回答 1

3
SET /P choose=Scelta: 
if /I "%choose%"=="A" GOTO OK
if /I "%choose%"=="B" GOTO KO
if /I "%choose%"=="esci" GOTO FINE
if /I "%choose%"=="" GOTO ERROR

CMD 将用 的值choose代替%choose%so

if /I %choose%==A GOTO OK 

被解释为

if /I ==A GOTO OK

这会产生错误。

还有一个更微妙的错误。

如果您首先选择aor b,您会得到正确的“正确选择”或“错误选择”响应,但如果您的下一个选择只是ENTER响应没有改变 - 将重复之前的响应。

原因是,如果您简单地键入,set /p它不会改变。你需要的是chooseENTER

SET "choose="
SET /P choose=Scelta: 
if /I "%choose%"=="A" GOTO OK

设置choose为 [无]

于 2013-06-10T14:07:26.770 回答