WinMerge をバッチファイルで起動する方法と解説【Windows】

WinMergeウィンマージ を『バッチファイル』で起動する方法を書きました。

バッチファイルでフォルダを指定しておいて、『ダブルクリック一発』で比較できるようにしました。

毎回ファイルやフォルダを指定する手間が省けて、とても快適になりました。

WinMerge のマニュアル

WinMergeウィンマージ を呼び出すときに使用した引数ひきすうのマニュアルです。

さて、自分がバッチファイルでやりたいことです。

  • 2つのフォルダを、両方とも読み取り専用で開く。
  • サブフォルダの中も再帰的に比較する。

あとは、WinMerge のヘルプを見て、目的に合った引数を選んでいきました。

コマンドライン – WinMerge ヘルプ

コマンドラインの書式
WinMergeU [/r] [/e] [/f filter] [/x] [/xq] [/s] [/ul] [/um] [/ur] [/u] [/wl] [/wm] [/wr] [/minimize] [/maximize] [/fl] [/fm] [/fr] [/dl leftdesc] [/dm middledesc] [/dr rightdesc] leftpath [middlepath] rightpath [/o outputpath] [/al] [/am] [/ar]
WinMergeU
WinMergeU.exe のファイルパス。
/r
フォルダの比較で、サブフォルダまで再帰的さいきてきに比較する。(recursive compare)
/wl
読み取り専用として、ひだり側のアイテムを開く。

これで、WinMerge の左アイテムに RO(リードオンリー)と表示されました。

/wr
読み取り専用として、みぎ側のアイテムを開く。

これで、WinMerge の右アイテムに RO(リードオンリー)と表示されました。

leftpath
ひだり側で開く『フォルダ』や『ファイル』を指定する。
rightpath
みぎ側で開く『フォルダ』や『ファイル』を指定する。

コマンドラインのマニュアル

バッチファイルの中で使用したコマンドのマニュアルです。

コマンド ライン構文の記号 | Microsoft Docs
構文の説明で使われていた『カッコ記号』などの意味の説明です。
セット set | Microsoft Docs
構文は『set [<Variable>=[<String>]]』。

バッチファイルの中で変数を使うために使用しました。

変数を使うときは、%変数名% のように、変数名をパーセント記号 (%) で囲むと参照できました。

スタート start | Microsoft Docs
構文は『start ["<Title>"] [/d <Path>] [/i] [{/min | /max}] [{/separate | /shared}] [{/low | /normal | /high | /realtime | /abovenormal | belownormal}] [/affinity <HexAffinity>] [/wait] [/elevate] [/b] [<Command> [<Parameter>... ] | <Program> [<Parameter>... ]]』。

WinMerge を起動するために使いました。

start で起動すると、WinMerge の終了を待たずに処理が進みました。

なので、WinMerge が起動した後に、バッチファイルが自動で終了してくれました。

ところで、日本語マニュアルは、ヘルプコマンド(help または /?)でも見ることができました。

コマンドプロンプトを起動して、『help set』や『set /?』を実行したら、set コマンドの日本語ヘルプが表示されました。

バッチファイル例

WinMergeウィンマージ を起動するバッチファイルれいです。

set exe_file=C:\Program Files\WinMerge\WinMergeU.exe
set left_folder=F:\project\DATA-A
set right_folder=F:\project\DATA-B
start "" "%exe_file%" /r /wl /wr "%left_folder%" "%right_folder%"

ところで、start コマンドの先頭の空文字列からもじれつ "" は何か?

start コマンドのマニュアルによると、最初の空文字列からもじれつ "" は、コマンド プロンプト ウィンドウのタイトルバー (the Command Prompt window title bar) のタイトルを指定する場所でした。

けれども、GUI プログラムを起動するときに関しては、このタイトルに効果は無いようでした。

指定しても、WinMerge のウィンドウタイトルに、変化は無かったです。

なので、空文字列を指定しました。

あと、最初の空文字列 "" を省略したら、WinMerge がうまく起動しませんでした。

おそらくですが、ほかの関係ない引数がタイトル扱いされてしまって、start コマンドが期待した通りに動かなかったんだと思います。

実行結果

コマンドプロンプトの表示

バッチファイルを起動したときに表示された画面です。

コマンドプロンプトが一瞬だけ表示されて、すぐに消えました。

F:\project>set exe_file=C:\Program Files\WinMerge\WinMergeU.exe

F:\project>set left_folder=F:\project\DATA-A

F:\project>set right_folder=F:\project\DATA-B

F:\project>start "" "C:\Program Files\WinMerge\WinMergeU.exe" /r /wl /wr "F:\project\DATA-A" "F:\project\DATA-B"

このコマンドプロンプトの画面を出さないようにする方法です。

  1. バッチファイルへの『ショートカット』を作ります。
  2. ショートカットのプロパティで、『実行時の大きさ(R):』を『最小化』にします。

あとは、『ショートカット』から起動したら、コマンドプロンプトの画面が出なくなりました。

しかしこれでも、タスクバーには一瞬表示されましたが、そこは妥協しました。

タスクバーにも出さない方法です。

バッチファイルを使わずに、WinMergeU.exe のショートカットを使います。

  1. WinMergeU.exe のショートカットを用意して、プロパティを開きます。
  2. リンク先:(T):』に、オプションの引数やフォルダパスを追加します。

(追加例)

"C:\Program Files\WinMerge\WinMergeU.exe" /r /wl /wr "F:\project\DATA-A" "F:\project\DATA-B"

これで、コマンドプロンプトのウィンドウを出さずに、ダブルクリック一発でフォルダ比較ができるようになりました。

WinMerge の表示

バッチファイルでフォルダ比較をしたときの画面です。

フォルダ比較の画面

バッチファイルで指定した通りに、2つのフォルダが比較されました。

サブフォルダの中まで比較していて、ステータスバーに読み取り専用の RO も表示されています。

ファイル比較の画面

こちらも、ステータスバーに読み取り専用の RO が表示されました。

タイトルとURLをコピーしました