🐝

errorlevel は環境変数じゃなかった

2022/07/16に公開

バッチ中やコマンドプロンプトで

> 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