🐝
errorlevel は環境変数じゃなかった
バッチ中やコマンドプロンプトで
> hoge.exe
を実行した結果の errorlevel は環境変数でなく変数風の特別なモノ。
errorlevel を 0 にするには
cd >nul
のような成功するコマンドを実行するが吉。
set errorlevel=0
をすると、環境変数 errorlevel が作られ、実行結果の errorlevel を隠してしまう。
エラーが起きても errorlevel=0 のままなのでした(やってもた)。
echo,pause や popd は errorlevel を変更しない。
なので errorlevel!=0 でのエラー後の処理がその範囲なら、バッチを抜ける処理では下手に
exit /b 数値
等せず errorlevel を素通りさせるのが楽。
逆に errorlevel を自分で設定するには exit /b 数値 をする。
バッチから抜けずに errorlevel に数値を設定するなら "call :ラベル" を利用。
call :set_errorlevel 1
(略)
goto SKIP
:set_errorlevel
exit /b %1
:SKIP
(略)
これがベターなのかマヌケなのか未確認...
Discussion