我的问题: 我设置一个带有提示的VAR和三个IF来让选择。 第四种选择不起作用。我想如果我推进没有任何类型的东西,它会回到:MOSTRA。 实际上将它留空并在键盘上输入Enter,它会返回GOTO WASO 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
答案 0 :(得分: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%
所以
if /I %choose%==A GOTO OK
被解释为
if /I ==A GOTO OK
生成错误。
还有一个更微妙的错误。
如果您首先选择a
或b
,则会得到“正确选择”或“错误选择”的回复,但如果您的下一个选择只是ENTER
响应不对,那么t更改 - 将重复之前的响应。
原因是如果只输入set /p
,则choose
不会更改ENTER
。你需要的是
SET "choose="
SET /P choose=Scelta:
if /I "%choose%"=="A" GOTO OK
将choose
设为[无]