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

Presented by Nishishi via Movable Type. Last Updated: 2022/03/25. 10:35:17.

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

関連日記:
SyncToyの同期フォルダペア設定が全部消えてしまったのでバックアップから復活させた(2019年4月28日)

コメント

ありがとうございました。プログラム終了後にできたファイルを自動でDropboxのフォルダーに同期させたかったのですが、SyncToyを使った方法がわかりませんでした。おかげさまで解決できました!

投稿者 ひで : 2018年03月21日 17:04

情報がお役に立ったようで良かったです。(^-^)
SyncToyは本当に便利です。Windows10でも問題なく動作してくれますし。

投稿者 にしし : 2019年03月23日 16:58

ありがとうございました。環境によって同期設定が勝手に書き換えられてしまったために対策を探していましたが、SyncToyの設定ファイルの場所についての記載がすごく参考になりました。

投稿者 ようすけ : 2021年12月09日 22:45

SyncToyの設定ファイルの場所というと、お読みになったのは
『SyncToyの同期フォルダペア設定が全部消えてしまったのでバックアップから復活させた』
https://www.nishishi.com/blog/2019/04/synctoy_backupd.html
の方でしょうかね? 何にせよ、お役に立って良かったです。(^_^)

投稿者 にしし : 2021年12月10日 22:50

コメント数: 4件

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



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

※ご投稿頂いた内容は、掲載前に管理者が確認する設定にしている場合があります。たいていは数日以内には表示されるはずですので、気長にお待ち願います。m(_ _)m

著者紹介


にしし(西村文宏)

にししでございます。本書いたり記事書いたりしてます。あと萌えたり。著書5冊発売中です(Web製作系4冊+小説1冊)。著書や記事は「西村文宏」名義。記事は主にAll Aboutで連載。本の最新刊は2011年3月に発売されたライトノベルでございますよ。

Twitter:にしし/西村文宏
にしし/西村文宏 on facebook にしし/西村文宏 on mixi フォローはお気軽に!

にしし(西村文宏)連絡先
☕ コーヒーをおごる

著書一覧と詳細

にししふぁくとりー Sakura scope内限定での主要なカテゴリ

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