My Life

映画、音楽、プログラミングTipsのブログ

プログラミング

【PowerShell】WinMergeで複数ファイルをコマンドラインから比較する

投稿日:6月 10, 2018 更新日:

ファイルの差分を見たい時、WinMergeは便利なツールです。

マウス操作でも問題ありませんが、数十件、数百件という大量ファイルの差分チェックは、スクリプトにお任せしましょう。

やること

差分チェックをするファイルの対応表を読み込む

読み込み結果を基にWinMergeをコマンドライン起動させ、ファイルの差分結果を表示

スクリプトの作成は、
Windowsマシンにデフォルトで入ってるPowerShellを使ってみます。

用意するもの

比較対象のファイル

target1フォルダ

ファイル名 内容
food.txt apple
banana
orange
hobby.txt guitar
soccer
swimming
location.txt tokyo
osaka
kyoto

target2フォルダ

ファイル名 内容
1.txt リンゴ
banana
orange
2.txt guitar
サッカー
swimming
3.txt tokyo
osaka
京都

手順

1.突合ファイルの対応表作成

・前提

  1. 突合ファイル群Aの命名規則:[半角英小文字].txt
    例:food.txt、hobby.txt、location.txt
  2. 突合ファイル群Bの命名規則:[数字].txt
    例:1.txt、2.txt、3.txt
  3. ファイル群Aとファイル群Bとは、必ず対応しているファイルがある。

対応表はカンマ区切り(タブでも良いと思います。お好みで)でtxtファイルに保存します。

・対応表

2.スクリプトを作成

下記のps1ファイルを作成して任意のディレクトリに保存します。

実装途中で気づいた事

・チェック件数について

一気に実行させるとチェック対象の件数分(100件なら100件分)、WinMergeが起動してしまいました。そのため、5件ごとに一時停止させる処理を追加しました。

・PowerShellでのexeファイルを実行方法について

ファイルへのフルパスを書けば実行できるかと思いましたが、それでは実行できませんでした。どうも、ファイルパスに空白文字がある場合は、&をつけた上でファイルパスを指定する必要があるみたいです。

3.プログラムを実行

PowerShellを起動し、上記で作ったプログラムを実行します。
WinMergeコマンドライン実行方法画像1

件数分だけWinMergeが起動し、差分チェックの画面がでました。
WinMergeコマンドライン実行方法画像2

5件より多い場合、このような感じで一時停止します。再開したい場合、キーを何か押下すればチェック処理が再開されます。
WinMergeコマンドライン実行方法画像3

 

まとめ

如何でしたでしょうか?
PowerShellで行いましたが、Bash、PHP等々の他言語にもおきかえられる内容だと思います。他にも良い方法がありましたら教えていただけるとうれしいです!m(__)m

また、WinMergeのコマンドライン起動を使いこなせれば、ファイルの差分チェック作業をかなり効率化できそうだなと感じました。何十、何百ものファイルを手で開いて確認していくのは、心に闇を抱えてしまいますしね笑

それでは。

エンジニアによるエンジニアのためのサイト始まる!!【teratail】

-プログラミング
-,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

This site uses Akismet to reduce spam. Learn how your comment data is processed.

関連記事

テキストファイル画像1

【PHP】CSVファイルからINSERT文を生成する

こんにちは。tomoです。 仕事でGoogleスプレッドシートデータをDBに登録しなければいけない事があり、 スプレッドシート情報をCSV形式に変換したデータからINSERT文を生成するプログラムを作 …

[PHP]解説!Mustache【BLOCKS pragma】の使い方

PHP用Mustacheの拡張機能 BLOCKS pragmaについてまとめます。 目次1 Mustacheとは(簡単に)1.1 メリット1.2 デメリット2 BLOCKS pragmaで何が出来るの …

[PHP]解説!Mustache【ANCHORED DOT pragma】の使い方

PHP用Mustacheの拡張機能 ANCHORED DOT pragma についてまとめます。 目次1 ANCHORED DOT pragmaで何が出来るのか?2 使い方3 使い方【応用編】4 注意 …

[php]配列同士を比較する【for文不要】

配列同士に共通な値があるか否かは、array_intersect関数で判定可能です。

【参考】foreachの場合 [crayon-5 …

[PHP]解説!Mustache【FILTERS pragma】の使い方

PHP用Mustacheの拡張機能 FILTERS pragma についてまとめます。 目次1 FILTERS pragmaで何が出来るのか?2 使い方3 注意4 FILTERS pragmaとLam …