にしし ふぁくとりー(西村文宏 個人サイト)

Presented by Nishishi via Movable Type. Last Updated: 2015/09/22. 13:18:35.

Microsoft製フリー同期ツール「SyncToy」には、コマンドラインから使える SyncToyCmd.exe もあるのが便利!

Microsoft SyncToy 画面イメージMicrosoftが「SyncToy」という名称のファイル同期ツールを無料配布しています。
この同期ツールは、同期タイミングが完全に「手動」だという点が特徴です。
自動的な同期はしないので、同期したいタイミングが不規則だったり、同期タイミングを完全にコントロールしたい場合には便利です。なんせ、勝手には一切動かないので。(^_^;)

また、一般的に「同期」というと、双方向に「2者の内容を同じにする」ことを指すと思いますが、この「SyncToy」では以下の3つのパターンを指定できます。

  • 「Synchronize」 : 双方向に同期
  • 「Echo」 : 一方向に同期(=「片方A」の変更を「片方B」へ適用するが、「B」の変更は「A」には反映しない。)
  • 「Contribute」 : 一方向に供給(=基本は「Echo」と同じ。ただし「A」でファイルが削除されても「B」では削除しない。変更と追加だけを反映。)

このEchoやContribute設定は、「メインPC」の内容を一方的に「サブPC」へ反映したい場合に便利です。
個人的には、Contributeをよく使っています。これは、「メインPC」側の内容を一方的に「サブPC」側に反映しますが、あくまでも「新規追加」と「変更」を反映するだけで、「削除」は反映しません。(「メインPC」側でファイルを削除しても「サブPC」側では削除しません。)
一方向での同期の場合、「サブPC」というのは完全に補助的な用途なので、削除まで反映させる必要性はあまりありません。むしろ、万一のためのバックアップとして、「サブPC」側には過去のデータも残っている方が若干安心です。^^;

というわけで、この「SyncToy」という同期ツールを便利に活用しています。
英語版しかありませんが、ウインドウ構成は非常にシンプルなので、特に問題なく設定・操作できます。

※新規に同期ペアを作成するウィザードがシンプルなので気付きにくいですが、実は後から画面上の「Change Options...」という文字をクリックすると、除外ファイルの指定を詳しく設定できます。(^_^;) ファイル名の条件での制限もできますし、読取専用属性・システム属性・隠し属性などの属性の有無で対象を決めたりもできます。

SyncToyには、GUI版の他にCUI版もあり、バッチファイル等から呼び出して実行できる

ここからが本題。(^_^;)
この「SyncToy」は、起動するとウインドウが表示され、マウスで操作できる「GUI」がベースです。
しかし、コマンドラインから実行できるCUI版プログラム「SyncToyCmd.exe」も用意されています。

下図は、「SyncToy」がインストールされたフォルダの中身です。
SyncToy.exe が本体プログラムですが、それとは別に SyncToyCmd.exe というプログラムも見えます。

Microsoft SyncToy の格納フォルダには、コマンドライン用プログラムもある。

この SyncToyCmd.exe は、単純にコマンドプロンプト上から「SyncToy」を起動できるという話ではありません。
CUI版は、完全にコマンドプロンプト内で処理が完結します。ウインドウは表示されません。

パラメータとして「-R」を指定することで、指定したペアの(または全部の)同期処理を実行できます。
このとき、一切ユーザ側に質問はされないので、余計なキー操作を要求されることがありません。
なので、自分の書いたスクリプト(バッチファイル等)内からSyncToyを起動して、指定の同期処理を実行させられます。

これが意外と便利です。

SyncToyCmd.exe のコマンドプロンプト上での実行例

上図は、単にコマンドプロンプト上から、「-R」オプションを加えて、指定の同期を実行してみた画面イメージです。(黄色い下線の部分が、コマンドラインから入力した内容。)
実行結果として表示された内容を見ると、

  • 同期モードは「Contribute」で実行され、
  • 60個のファイルが同期処理(新規追加とか変更とか)の対象で、
  • 510個のファイルに関しては何もしない

……といったような処理結果が分かります。
まあ別に読む必要はないので、これらの結果表示は無視して構わないのですが。
見ての通り、実行から終了まで、一切ユーザ側に入力が求められません。

なので、これを利用して、スクリプト(WSHやバッチファイル等)を記述すれば、

  • アイコンのダブルクリックだけで、手軽に指定の同期を取る機能
  • タスクスケジューラを使って、指定のタイミングで同期を取る機能
  • スタートアップに入れて、起動時にのみ同期を取る機能

……といったことが作れます。
結構便利です!

なお、SyncToyCmd.exe をオプションを付けずに実行するか、「-?」オプションを付けて実行すると、下図のようにヘルプが出てきます。

SyncToyCmd.exe のオプションヘルプ

まあ、でも、このヘルプを読むよりも、「SyncToy」のウインドウを起動して、メニューから「Help」→「Learn How to schedule SyncToy」をクリックしたり、「Help」→「SyncToy Help」でヘルプを出してから「SyncToy How To Topics」→「Run SyncToy From Command Line」を見る方が詳しく分かると思います。(英語ですが)

簡単にオプションを説明すると、

  • SyncToyCmd.exe (オプション無し)
    → ヘルプを表示
  • SyncToyCmd.exe -R
    → 全ペアの同期を一括実行
  • SyncToyCmd.exe -R "PairName"
    → 指定した「PairName」の同期のみを実行

となります。
-Rオプションの後に記述する名称は、(名称内に空白文字が含まれる場合は)絶対に引用符で囲む必要があります。

というわけで、なかなか便利なMicrosoft製フリー同期ツールなのでした。
同期処理を、全自動ではなく、自分で掌握(コントロール)したい場合とか、自作のスクリプト内から同期処理を呼び出して利用したい場合には、すごく便利だと思います。

コメント

コメント数: 0件

コメント投稿欄 この日記に対するコメント投稿を歓迎します。

保存しますか?



※本文中にURLは書けません。(書くと投稿が拒否されますのでご注意下さい。)

※投稿内容は、実際にページ上に掲載される前に、管理者によって確認される設定にしている場合があります。その場合は、投稿後にその旨が表示されます。たいてい1~2日以内には表示されるはずですので、気長にお待ち願います。m(_ _)m

トラックバック

このエントリーへのトラックバックURLを表示するにはここをクリック
※スパム防止のため、トラックバックURLは別ウインドウで表示します。(JavaScriptが有効でないと表示されません。)

--- 当サイト内を検索 ---