私はこのようなことをします:
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
、choice によって返される実際のエラー レベルが指定された値以上である場合に true と評価されます。したがって、3 を押すと、最初の if 式が true になり、スクリプトが終了します。詳細についてはお電話help if
ください。
2 つの簡単な回避策があります。
最初のもの(より良い)-式をシステム変数と特定の値if errorlevel
の実際の比較に置き換えます:%ERRORLEVEL%
if "%ERRORLEVEL%" == "1" goto exit
if "%ERRORLEVEL%" == "2" goto about
if "%ERRORLEVEL%" == "3" goto play
2 つ目 - 比較の順序を変更します。
if errorlevel 3 goto play
if errorlevel 2 goto about
if errorlevel 1 goto exit
この問題を解決する最も簡単な方法は、%errorlevel%値を使用して、目的のラベルに直接移動することです。
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