提问者:小点点

Batch if命令,如果不满足多个条件,则执行一个操作


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

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的输入goto:error

我也将需要相同的函数输入,没有数字,所以使用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,则转到错误。

我使用等进行了测试,但没有任何效果。

最终的结果是,它将跳过批处理的下一个部分,而不是转到

提前感谢你的帮助。


共3个答案

匿名用户

在多找了一些东西并对自己进行了进一步的学习之后,我发现可以在一个命令行中使用多个“if”语句。

因此对于:

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

null

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

它就像一个符咒。我还有很多路要走,但我学到了一些东西。谢谢你给我指明了正确的方向。

匿名用户

你可以使用“choice”而不是“if”,像这样:

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

匿名用户

您不必检查任何不包含1,2,3,4或5的输入,因为所有有效的选择都已处理,并且永远不会触及

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
REM any other value for %choice%:
GOTO Error

当然,这只适用于,而不适用于

与IZB一样,我更喜欢命令,因为它不允许您选择无效输入。