概要
robocopy.batは以下の効果を持つ。
- sourceからdestにミラーリング(ファイル内容を完全に同期)する
- ログをlogfolder下に日付付きファイルで出力(robocopy_2023-01-30.log)
- 1週間前のログファイルは実行と同時に削除される
robocopy.bat
@echo off
rem ファイル保存時のエンコードにより、以下の数値を変えること(Shift-JIS:932, UTF-8:65001)
chcp 932
rem -----Params-----
rem ミラーリング源
set source="C:\work\source"
rem ミラーリング先
set dest="C:\work\dest"
rem ログファイルを作成するフォルダ
set logfolder="C:\work\log"
rem -----Params-----
rem -----Function-----
rem logfolder下に日付付きのlogファイルを作る(robocopy_2023-01-30.log)
set logfile=%logfolder%"\robocopy_%date:~0,4%-%date:~5,2%-%date:~8,2%.log"
rem robocopyコマンドでフォルダをミラーリングする
robocopy "%source%" "%dest%" /MIR /LOG+:"%logfile%"
rem ログフォルダにある、更新日時が7日前の.logファイルを全て削除する
forfiles /P "%logfolder%" /M "*.log" /D -7 /C "cmd /c del @file"
rem -----Function-----
注意
batファイルのエンコード
.batファイルをShift-JISで保存する場合はchcp 932
UTF-8の場合はchcp 65001
を指定すること。
batファイルのテスト実行は「管理者として実行(A)」
robocopyコマンドは「管理者として実行(A)」じゃないと動かない?