6

我做这样的事情:

echo 1-exit
echo 2-about
echo 3-play
choice /c 123 >nul
if errorlevel 1 goto exit
if errorlevel 2 goto about
if errorlevel 3 goto play
:play
blah
:about
blah
:exit
cls

如果我选择“播放”选项,它就会退出。我该如何防止这种情况发生?

4

2 回答 2

10

if errorlevel如果选择返回的实际错误级别大于或等于给定值,则表达式计算为真。因此,如果您点击 3,则第一个 if 表达式为真并且脚本终止。致电help if了解更多信息。

有两种简单的解决方法。

第一个(更好) - 用系统变量与给定值if errorlevel的实际比较替换表达式:%ERRORLEVEL%

if "%ERRORLEVEL%" == "1" goto exit
if "%ERRORLEVEL%" == "2" goto about
if "%ERRORLEVEL%" == "3" goto play

第二个 - 更改比较顺序:

if errorlevel 3 goto play
if errorlevel 2 goto about
if errorlevel 1 goto exit
于 2012-06-18T19:44:08.537 回答
3

The easiest way to solve this problem is to use the %errorlevel% value to directly go to the desired label:

echo 1-exit
echo 2-about
echo 3-play
choice /c 123 >nul
goto option-%errorlevel%
:option-1
rem play
blah
:option-2
rem about
blah
:option-3
exit
cls
于 2012-06-19T03:49:41.173 回答