コマンドプロンプトからWinMergeを操作する


はじめに

「WinMerge」はスクリプトや設定ファイルの差分を比較する際に重宝していますが、調べ物をしている最中にWinMergeをコマンドラインから操作する方法があることを知りました。

以下のようにコマンドラインでWinMergeを定期的に実行すれば、例えば「たまに更新されるファイルを比較して、更新を検知する」ということが可能になるかもしれません。

方法

  • 以下のコマンドで2ファイルを比較して、その結果をファイルに出力することができます。
  • 「1ファイルずつの比較結果」と「フォルダ単位での比較結果」で、得られる結果ファイルのフォーマットが異なる点に注意してください。
    • 1ファイルずつの場合:HTMLファイル。WinMergeの画面とよく似たフォーマットになっています。
    • フォルダ単位での比較結果
> start WinMergeU {左パネルに表示するファイル/フォルダ} {右パネルに表示するファイル/フォルダ} /or {比較結果の出力先ファイル}

1ファイルずつの比較結果の例

  • 1ファイルずつの比較結果の場合、以下の図のようにGUIで見やすい結果が得られます。
    • 逆に、この結果ファイルをプログラムで解析するのは少々面倒だと思います...

フォルダ単位での比較結果の例

  • フォルダ単位での比較結果の場合、以下のように単なるテキストとして結果が出力されます。
    • HTMLで出力されたものよりは、プログラムで解析しやすいと思います。
result.txt
C:\Users\NKOJIMA\Desktop\a と C:\Users\NKOJIMA\Desktop\b の比較
2020/02/02 18:17:14
ファイル名,フォルダ,比較結果,左日付,右日付,拡張子
..,,,,,
a.txt,,テキストファイルは同一です,  2020/02/02 18:11:37,  2020/02/02 18:11:37,txt
b.txt,,テキストファイルは同一です,  2020/02/02 18:11:44,  2020/02/02 18:11:44,txt
c.txt,,右側のみ: C:\Users\NKOJIMA\Desktop\b,  ,* 2020/02/02 18:16:03,txt

その他

上記のコマンドを実行するとWinMergeが起動したままになってしまうので、処理が完了したら次のコマンドでWinMergeを終了させると良さそうです。

> taskkill /IM "WinMergeU.exe"
成功: プロセス "WinMergeU.exe" (PID 2600) に強制終了のシグナルを送信しました。

参考URL