我做这样的事情:
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
如果我选择“播放”选项,它就会退出。我该如何防止这种情况发生?
我做这样的事情:
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
如果我选择“播放”选项,它就会退出。我该如何防止这种情况发生?
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
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