2016-07-21 4 views
0

私はしばらくバッチを使用していましたが、私は最近、ERRORLEVELSを使用する前に遭遇したことのない問題に直面しました。バッチERRORLEVELが正常に動作しない

ここでは、エラーを示すために作成した短いプログラムです。

@echo off 
title Choices 
CMD /C EXIT 0 
echo [1] Choice 1 
echo [2] Choice 2 
echo [3] Choice 3 
choice /c 123 /n 
IF ERRORLEVEL 1 GOTO ONE 
IF ERRORLEVEL 2 GOTO TWO 
IF ERRORLEVEL 3 GOTO THREE 
echo Nice you broke it 
pause 
exit 
:ONE 
echo CONGRATS YOU CHOSE 1 
pause 
exit 
:TWO 
echo NICE YOU CHOSE 2 
pause 
exit 
:THREE 
echo OOH YOU CHOSE 3 
pause 
exit 

非常にシンプルで、あなたがしたのは数字を押すだけで、何番目の数字が押されたのかということです。問題は私が何を押しても常に1を押すと何が起こるかを出力します。私は%errorlevel%を使用していましたがうまくいたが動作しなくなったので新しいメソッド(IF ERRORLEVEL WHATEVER)に切り替えましたどちらもうまくいきません。

+3

'ERRORLEVELが1 **以上**の場合はERRORLEVELは1 'を意味します。逆順で使用するか、 'エラーレベル2でない場合はエラーレベル1 ' –

答えて

0

マイクロソフトのサポート資料Testing for a Specific Error Level in Batch Filesをお読みください。

コマンドプロンプトウィンドウを開き、if /?を実行し、出力ヘルプ、特に約errorlevelの段落を読んでください。

バッチファイルのためのソリューションは非常に簡単で、errorlevelにラインテストの順序を逆:

@echo off 
title Choices 
CMD /C EXIT 0 
echo [1] Choice 1 
echo [2] Choice 2 
echo [3] Choice 3 
choice /c 123 /n 
IF ERRORLEVEL 3 GOTO THREE 
IF ERRORLEVEL 2 GOTO TWO 
IF ERRORLEVEL 1 GOTO ONE 
echo Nice you broke it 
pause 
exit 
:ONE 
echo CONGRATS YOU CHOSE 1 
pause 
exit 
:TWO 
echo NICE YOU CHOSE 2 
pause 
exit 
:THREE 
echo OOH YOU CHOSE 3 
pause 
exit 
関連する問題