批量“if”命令,“if”不满足多个条件,执行操作

时间:2015-09-10 03:11:39

标签: batch-file if-statement command-line cmd goto

我试图在标题中传达我的意图,但基本上这是我的批处理命令的“部分”:

set /p "choice=Enter an option: "
if %choice% == 1 GOTO Redo
if %choice% == 2 GOTO Remove
if %choice% == 3 GOTO Notice
if %choice% == 4 GOTO Cancel
if %choice% == 5 GOTO Exit
  

任何不包含1,2,3,4或5的输入:错误

对于非数字的输入,我也需要相同的功能,因此使用EQU,NEQ,GTR,LSS等不适用于:

set /p "Option=Would you like to do ..., y/n?: "
if %Option% == n GOTO MainMenu
if %Option% == y GOTO Reroute
  

如果不是n或y,则转到错误。

我使用if %errorlevel% NEQ 0 goto :error进行了测试,但无济于事。

最终发生的事情是它会跳过批次的下一部分,而不是转到:error

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

在进行了更多搜索并进一步了解自己的主题之后,我发现你可以使用多个" if"单个命令行中的语句。

  

所以:

set /p "Option=Would you like to do ..., yes or no?: "
if %Option%==no GOTO MainMenu
if %Option%==yes GOTO Reroute
  

我用过:

if not %Option%==no if not %Option%==yes GOTO :Error2

它就像一个魅力。我还有很长的路要走,但我学到了一些东西。 谢谢你指点我正确的方向。

答案 1 :(得分:0)

您可以使用" choice"比如"如果",就像这样:

choice /C YN /N /M "Would you like to do ..., y/n?: "
set ERR=%ERRORLEVEL%
if %ERR%== 1 goto Reroute
if %ERR%== 2 goto MainMenu