日別アーカイブ: 2021年11月23日

robocopyの戻り値を利用したエラーチェック

Windowsで利用できるrobocopyコマンドでデータのバックアップをしていると、CLIで実行するコマンドゆえにエラーの発生に気づきにくいことがあります。

robocopyは処理完了後に内容に応じた戻り値を出力するので、エラーの発生した戻り値が出ている時のみ何らかの処理を追加することで、エラーに気づきやすくすることが可能です。

戻り値の一覧は以下の通りです。

サーバー 2008 またはサーバー 2008 R2 Windows Robocopy ユーティリティでWindowsコード

[Microsoft Docs]

より詳しい情報としては以下の記事が参考になります。

Robocopy のエラー (戻り値) について

[Microsoft Technet]


8以上がエラーを含むコードなので、簡単にエラーチェックだけをしたいなら8以上で通知にしておけば良さそうです。

コードの例です。Powershellにrobocopyコマンドを組み込んで使っていますので、戻り値は$LASTEXITCODEという変数に格納されます。この変数を評価して、8以上だった場合にはWrite-Hostコマンドでログを確認するよううながす表示をするようにしています。

#Powershell
#コピー元コピー先の設定
$CopyFrom = [コピー元]
$CopyDest = [コピー先]

#データコピー
Robocopy $CopyFrom $CopyDest /S /R:5 /W:0 /LOG+:log.txt

#エラー判定
If($LASTEXITCODE -ge 8){
    Write-Host("エラーが発生しました。ログを確認して下さい。")
    
    Pause
}

動かすとこんな感じになります。外出中や寝ている間に動かしておいても、この窓が出ていなければ正常終了している、窓がある場合何らかのエラーがあったことが確認できて便利です。