バッチファイルでのエラー処理を解説します。errorlevel・exit /b・エラー時の分岐処理を理解すれば、堅牢なバッチが作れます。
errorlevelとは?
errorlevelはコマンドの実行結果を表す数値です。0は成功、1以上はエラーを意味します。直前に実行したコマンドの結果が自動的に設定されます。
@echo off
copy source.txt dest.txt
if errorlevel 1 (
echo エラー: コピーに失敗しました
exit /b 1
)
echo コピー成功errorlevelの確認方法
| 書き方 | 意味 |
|---|---|
| if errorlevel 1 | errorlevelが1以上の場合(エラー) |
| if not errorlevel 1 | errorlevelが0の場合(成功) |
| if %ERRORLEVEL%==0 | errorlevelが0と完全一致 |
| echo %ERRORLEVEL% | errorlevelの数値を表示 |
exit /bでエラーコードを返す
@echo off
setlocal
call :checkFile "C:\data\input.txt"
if errorlevel 1 (
echo 処理を中断します
pause
exit /b 1
)
echo 正常終了
pause
exit /b 0
:checkFile
if not exist %1 (
echo エラー: %1 が見つかりません
exit /b 1
)
echo ファイル確認OK: %1
exit /b 0実践:エラー時にログを残す
@echo off
set LOGFILE=error_log.txt
robocopy C:\data D:\backup /e
if %ERRORLEVEL% GEQ 8 (
echo %DATE% %TIME% バックアップ失敗 ERRORLEVEL=%ERRORLEVEL% >> %LOGFILE%
echo エラーが発生しました。ログを確認してください。
) else (
echo %DATE% %TIME% バックアップ成功 >> %LOGFILE%
echo バックアップ完了
)
pauserobocopyはerrorlevel 8以上が実際のエラーです。1〜7は「コピーされたファイルあり」「スキップあり」などの情報的なコードです。
まとめ
- errorlevelはコマンド実行後の結果コード(0=成功、1以上=エラー)
- if errorlevel 1 でエラーチェックができる
- exit /b 数値 でエラーコードを呼び出し元に返せる
- エラー時はログファイルに記録する習慣をつける
- 次の記事ではログ出力とデバッグを学ぶ



コメント