SyncToyで簡単同期

AというフォルダとBというフォルダの内容を同期したい場合に便利なのがRobocopyとSyncToy

RobocopyWindows Vista以降のOSについてくる。
http://www.atmarkit.co.jp/fwin2k/win2ktips/877robomir/robomir.html

これとは別にSyncToyというのもある(こちらのがお勧め)。
http://www.atmarkit.co.jp/fwin2k/win2ktips/611synctoy/synctoy.html

A→Bという設定を行った場合においてBが更新された場合(つまりBの内容が新しい場合)の動きが違う。
RobocopyはAの内容でBを上書き(あくまでもコピーツール)。
SyncToyはBの内容でAを更新(ちゃんと同期)。

SyncToyはコマンドラインからも起動できるので、Windowsのタスクに登録しておくと自動同期を行ってくれる。
ただし、ここでメンドクサイのが例の黒いcmd.exeがタスク実行時に表示されること。

対策として
1)ログインとは別アカウントでタスクを走らせる
2)VBScriptをはさむ

本当は1のほうがスマートな気がするが、ネットワークドライブとの同期などでどうしてもログインアカウントで実行が必要なときは2。
SyncToyと同一フォルダにsyncthis.vbsなど適当なファイル名で作成。

Set objShell = Wscript.CreateObject("Wscript.Shell") 
objShell.Run "SyncToyCmd -R""同期バッチ名""", 0

あとはこのスクリプトをタスクに登録するだけ。