Windowsのバッチで For文の中で環境変数ERRORLEVELを使って処理をすると思い通りに処理されない。 原因は、処理前にFOR処理を展開するため。 対処法は、 IF ERRORLEVEL 0 echo hoge 等。環境変数を使用しないように対応する。 理由は以下の通り http://www.ne.jp/asahi/hishidama/home/tech/windows/bat.htmlより抜粋 {{div_begin class="pre"}} ちなみに、以下のような書き方は、分かりにくいが、やはりダメ。 >test.bat & if %ERRORLEVEL% neq 0 echo fail >test.bat & echo %ERRORLEVEL% なぜなら、環境変数は全体の実行開始前に展開されるから。 つまり実行前に%ERRORLEVEL%の値が0だったとすると、以下のように展開されてから実行されることになる。 >test.bat & if 0 neq 0 echo fail >test.bat & echo 0 したがって、test.batがどんな値を返して(%ERRORLEVEL%にセットされて)も、実行前の値で「&」以降が処理されるということになる。 (この為に、エラーコードチェックに関してはERRORLEVELという演算子がわざわざ用意されているわけだ。これなら値の取得自体はif文の実行時に行うわけだから。) {{div_end}}   {{category2 OS,Windows,コマンドプロンプト}}