Windowsバッチファイル

バッチファイルのログ出力とデバッグ【リダイレクト・追記・タイムスタンプ付きログ】

Windowsバッチファイル
記事内に広告が含まれています。

バッチファイルのログ出力とデバッグテクニックを解説します。リダイレクト・追記・@echo on/offを使いこなして効率よくデバッグしましょう。

リダイレクトの基本

記号意味
>上書きでファイルに出力echo test > log.txt
>>追記でファイルに出力echo test >> log.txt
2>エラー出力をファイルへcommand 2> error.txt
2>>エラー出力を追記command 2>> error.txt
2>&1エラー出力を標準出力にマージcommand > all.txt 2>&1
nul出力を捨てる(非表示)command > nul

タイムスタンプ付きログの実装

@echo off
set LOGFILE=C:\logs\batch_log.txt

:: ログ出力関数
call :log "処理開始"

:: 処理
copy C:\data\*.csv D:\backup\ > nul 2>&1
if errorlevel 1 (
    call :log "エラー: CSVコピー失敗"
) else (
    call :log "成功: CSVコピー完了"
)

call :log "処理終了"
pause
exit /b 0

:log
echo %DATE% %TIME% %~1 >> "%LOGFILE%"
echo %DATE% %TIME% %~1
exit /b 0

デバッグテクニック

テクニック方法
コマンド表示モード@echo off を外す、または echo on で有効化
変数の値を確認echo 変数名=%変数名% を途中に挿入
一時停止して確認pause を途中に挿入
条件付きデバッグif defined DEBUG echo %VAR% のように制御

まとめ

  • >で上書き、>>で追記、2>&1でエラー出力を標準出力にマージできる
  • > nul でコマンドの出力を非表示にできる
  • ログ関数を作るとタイムスタンプ付きのログを効率よく出力できる
  • デバッグ時はecho onで全コマンドを表示して変数の中身を追う
  • 次の記事では管理者昇格(UAC)を学ぶ

コメント

タイトルとURLをコピーしました