批处理文件if语句与第二个else

时间:2013-10-29 09:03:49

标签: batch-file if-statement dos

我无法解决这个问题:

if /i {%ANSWER%}=={yes} (goto :yes) ELSE (goto :invalid) 
if /i {%ANSWER%}=={no} (goto :no) ELSE (goto :invalid)

if /i {%ANSWER%}=={no} (goto :no) ELSE (goto :invalid)不会工作,只有一个是肯定会有替代吗?我也以类似的方式尝试if NOT语句,它们似乎只是相互取消(当然)。

1 个答案:

答案 0 :(得分:2)

因为第一个invalid语句中的else,它会直接转到if。只是你的第二个if永远不会被评估。

我建议您只删除第一个else

if /i {%ANSWER%}=={yes} (goto :yes)
if /i {%ANSWER%}=={no} (goto :no) ELSE (goto :invalid)

请注意,这相当于:

IF /i {%ANSWER%} EQU {yes} GOTO yes
IF /i {%ANSWER%} EQU {no} GOTO no

ECHO Ooops, invalid input.
GOTO :EOF

:yes
ECHO You said YES!
GOTO :EOF

:no
ECHO You said NO!
GOTO :EOF