Batch file 批处理转到if语句

Batch file 批处理转到if语句,batch-file,Batch File,我的假设陈述是: If %choice%== 1 (goto 1) If %choice%== 2 (goto 2) :1 Echo 1 Pause :2 Echo 2 Pause 如果我选择2,它是有效的,但是如果我选择1,它会变为1,然后变为2 如何解决此问题?通过添加第三个绕过2的goto位置 If "%choice%" == "1" goto 1 If "%choice%" == "2" goto

我的假设陈述是:

If %choice%== 1 (goto 1)
If %choice%== 2 (goto 2)

:1
Echo 1
Pause

:2
Echo 2 
Pause 
如果我选择2,它是有效的,但是如果我选择1,它会变为1,然后变为2


如何解决此问题?

通过添加第三个绕过2的
goto
位置

If "%choice%" == "1" goto 1
If "%choice%" == "2" goto 2
:1 Echo 1 
Pause
goto 3
:2 Echo 2 
Pause
:3
或者可能:

goto opt%choice%
:opt1
Echo option 1
Pause
goto :eof
:opt2
Echo option 2 
Pause
goto :eof
但是,更好的方法是:

If %choice% equ 1 echo opt 1
If %choice% equ 2 echo opt 2
如果需要出现更多情况:

If %choice% equ 1 (
    echo opt 1
    echo do other opt 1 things
)
If %choice% equ 2 (
    echo opt 2
    echo do something else for opt 2
)
如果仅存在两个选项,请使用
if
else

If %choice% equ 1 (
    echo opt 1
) else (
    echo opt 2
)
然后选择
最佳
选项

choice /c 12 /m "Enter Choice: "
goto :opt%errorlevel%
:opt1
echo choice 1
echo do more for opt 1
goto :eof

:opt1
echo choice 2
echo do more for opt 2
goto :eof

通过另一个绕过2的
goto
。所以你又是唯一的一个了好几次,但你还没有回应任何人,他们花时间给你提供了你所要求的解决方案?哇,男孩<代码>:)批处理不喜欢空白<代码>如果“%choice%”==“1”或者更好的
如果%choice eq 1
但是这也取决于
%choice%
的来源。@Gerhard:我刚刚复制了海报的代码。那个打字错误是他们的,不是我的。不管怎样,我会修好的。你能给我荣誉吗?:)
choice /c 12 /m "Enter Choice: "
goto :opt%errorlevel%
:opt1
echo choice 1
echo do more for opt 1
goto :eof

:opt1
echo choice 2
echo do more for opt 2
goto :eof