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、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
于 2012-06-18T19:44:08.537 に答える
3

この問題を解決する最も簡単な方法は、%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
于 2012-06-19T03:49:41.173 に答える