二つのフォルダ内の各ファイルを比較する



二つのサブフォルダに関して中のファイルの中身を比較する方法を紹介します。

バッチ

comp は指定した二つのフォルダ内のファイルの比較は可能ですが、さらにそこのサブフォルダ(再帰的)の比較はできないようです。

フォルダに複数ファイルが存在する場合でもすべて検索対象となるようです。

次の例ではc:\temp\1 c:\temp\2に存在するファイルを比較します。

サンプル:


comp c:\temp\1 c:\temp\2


fc は指定した二つのフォルダ内のファイルの比較は可能ですが、さらにそこのサブフォルダ(再帰的)の比較はできないようです。

フォルダに複数ファイルが存在する場合でもすべて検索対象となるようです。

次の例ではc:\temp\1 c:\temp\2に存在するファイルを比較します。

サンプル:


C:\temp>fc c:\temp\1\*.* c:\temp\2\*.*



Powershell


中身は確認しませんが、各フォルダ、サブフォルダに存在するファイルの長さの違いを調べます。

サンプル:


$Folder1 = Get-childitem "C:\temp\1"
$Folder2 = Get-childitem "C:\temp\2"

Compare-Object $Folder1 $Folder2 -Property Name, Length



cygwin

cygwinとはWindows環境で Unix ライクなコマンドを使用するフリーソフトです。

cygwin をダウンロードする

diff で比較します。-r オプションでサブフォルダまで再帰的に検索します。

サンプル:



c:\cygwin\bin\diff.exe -r c:\temp\1 c:\temp\2


外部ソフト


マイクロソフトが提供する無料ツールであるwindiff.exe を使用した比較方法を紹介します。
以下からマイクロソフトの"Windows Server 2003 Service Pack 1 32-bit Support Tools "をダウンロードします。この中にwindiff.exe が含まれます。

https://www.microsoft.com/en-us/download/details.aspx?id=7911

インストールするとデフォルトでは以下のフォルダにインストールが行われます。

C:\Program Files\Support Tools

ここに比較ツールである windiff.exe が存在します。

(参考)Windiff.exe ユーティリティの使用方法 :https://support.microsoft.com/ja-jp/help/159214/how-to-use-the-windiff-exe-utility

このツールは基本はGUI ですが、起動時に比較対象を引数で指定し結果をファイルに出力することでコマンドラインのような使用が可能です。

次の例ではc:\test2\1\test.txt とカレントフォルダのtest.txtを比較しています。比較対象の片方を省略した場合は、カレントフォルダに同じ名前のファイルが存在する必要があります。

サンプル:


windiff c:\test2\1\test.txt -S c:\temp\result.txt


次の例ではカレントフォルダと指定したフォルダ間で同じ名前のファイルの比較を行います。結果をc:\temp\result.txtに出力しています。-S オプションを使用しない場合はGUIが表示され違う部分が表示されます。

カレントディレクトリが c:\test1 の場合、c:\test1 とc:\test2 のフォルダを丸ごと比較しています。

サンプル:


windiff c:\test2 -S c:\temp\result.txt  -S c:\temp\result.txt



二つのフォルダ(ディレクトリ)を丸ごと比較します。サブフォルダも比較対象となります。
以下の例ではc:\test1とc:\test2を比較し、結果をc:\temp\result.txtに出力しています。-S オプションを使用しない場合はGUIが表示され違う部分が表示されます。

サンプル:


windiff c:\test1 c:\test2 -S c:\temp\result.txt


二つのファイルを比較します。

サンプル:


windiff c:\test1\1\test.txt c:\test2\1\test.txt -S c:\temp\result.txt



コマンドサンプル一覧