Windowsのdiffコマンドに相当するものは何ですか?


284

私はこれに似た投稿があることを知っています:ここに。上記
compコマンドを使用してみましたが、「abcd」などのデータを含むファイルと「abcde」というデータを含むファイルの2つがある場合、ファイルのサイズが異なると表示されます。どこが違うのか正確に知りたかった。Unixでは、単純なdiffで行と列がわかります。Windowsのcompコマンドは、「abd」や「abc」のようなものがある場合に機能します。そうでなければ。これに使用できるアイデアはありますか?

回答:


461

これをCMDシェルまたはバッチファイルで実行します。

FC file1 file2

FC バイナリファイルの比較にも使用できます。

FC /B file1 file2

3
2つのフォルダー内のすべての変更されたファイルでこれをどのように行いますか?同様に、folder1の内容をfolder2の内容と比較します。folder2で変更された行が表示されますか?
Wolfpack'08

17
Wolfpack'08" @:FC path1\* FC path2\*フォルダ内のすべてのファイルを比較しますpath1path2ARENことを、彼ら(ファイル)が同じ名前を持って提供する名前を不整合を持つファイルがある場合は、FCが不足しているファイルを報告しますが、最初のフォルダのファイルのため。 「Tは、他の方法でラウンド2番目のフォルダに存在し、いないすべての不一致をキャッチするために、異なる技術がおそらく必要とされるであろう。。
アンドリー・M

@AndriyMでは、新しいファイルを使用すると、FCは実際の行を返さずにエラーになりますか?エラーメッセージだけ?
Wolfpack'08

1
@ Wolfpack'08:はい、欠落している相手についてのメッセージだけで、既存のパーティーからの行はありません。(しかし、それが他の既存のファイルペアの処理を終了することはなく、それがあなたが求めていたものである場合、それらの比較は引き続き実行されます。)
Andriy M

@AndriyMつまり、「エラーの場合:files in both directories are diff'd; files in only one directory throw errors.」興味深い。しかし、確かにdiffに相当するサードパーティのプログラムはありますか?
Wolfpack'08

36

さて、Windowsでは私は幸いにもdiff、他の多くのGNUツールを実行しています。あなたはcygwinでそれを行うことができますが、私はそれがはるかに軽いインストール体験であるため、個人的にはGnuWin32を好みます。

したがって、私の答えは、Windowsのと同等のものはdiffdiffそれ自体に他ならないということです。


1
Cygwinの基本インストールにはdiffが含まれていないようです。それを取得するためにインストールする必要がある追加のパッケージは何ですか?
Warren Dew

7
cygwinはお勧めしません。私はネイティブのWin32ポートの差分を使用します
David Heffernan

1
@WarrenDew必要なCygwinパッケージはdiffutilsです。cygwin.com/cgi-bin2/…を
Steve Pitchers


19

もう1つの方法は、ここからgitをダウンロードしてインストールすることです。次に、変数Git\bin\へのパスを追加しますPATH。これにより、diffだけでなく、windowsコマンドラインから使用できる他の多くのLinuxコマンドも得られます。

PATH変数を設定するには、[コンピューター]を右クリックして[プロパティ]を選択します。次に、画面の左側にある[システムの詳細設定]をクリックします。ポップアップで、[環境変数]をクリックし、ユーザー変数のPATH変数を追加または更新します。Git\bin\

Git diffのドキュメント


@firelight-ご回答ありがとうございます。ここであなたが意味することを詳しく説明できますか:「次に、Git \ bin \へのパスをPATH変数に追加します。」
BKSpurgeon

2
@BKSpurgeon-[コンピュータ]を右クリックして[プロパティ]を選択すると、画面の左側にある[システムの詳細設定]をクリックできます。どちらか\ Gitの\ binにして、ユーザー変数にPATH変数を追加または更新し、ポップアップする環境変数をクリックして、中
ティム・ハッチソン

@JustinCormackこれに関する参照はありますか?私はGit Bashでdiffを試してみましたが、うまくいきました
Tim Hutchison、

3
@Tim Hutchison、あなたの答えから:「これは、diffだけでなく、windowsコマンドラインから使用できる他の多くのLinuxコマンドも提供します。」-どっち?Gitをインストールするとき、彼/彼女はgit...PATHから利用可能な実行可能ファイルを持っている必要があります。さらに、答えにはおそらく1つの重要な情報が含まれている必要があります。それはgit diff、だけでなくを書いてdiffツールを起動する必要があるということですdiff
PetrBodnár2018

おい、それはまったく別のものだdiff
vintproykt

14

私の場合、FCはうまく機能しています。変更された行だけが必要だったため、役に立ちませんでした。そしてFCは、ファイル名、同じ行、二国間比較などの追加データを提供します。

    >fc data.txt data.txt.bak   
    ***** DATA.TXT
    ####09
    ####09
    ####09
    ***** DATA.TXT.BAK
    ####09
    ####08
    ####09

しかし、私の場合、変更された行のみを必要とし、それらの行を他のヘッダーやデータなしで別のファイルにエクスポートしたいと考えました。

そのため、「findstr」を使用してファイルを比較しました。

findstr /V /G:data.txt.bak data.txt >DiffResult.txt

どこ :

data.txt.bak 古いファイルの名前です

data.txt 新しいファイルの名前です

DiffResult.txt 変更されたデータ、つまり1行だけを含む#### 09


1
/ A変更されたブロックの最初の行と最後の行のみ/ Nは行番号を表示
Lukas

10

fc。fcは、Cygwinのdiffよりも大きなファイル(> 4 GB)の処理に優れています。


10

Powershell(Windowsの一部)もあります。迅速ではありませんが、柔軟性があります。基本的なコマンドを次に示します。より良いフォーマットが必要な場合、人々はさまざまなコマンドレットとスクリプトを作成しています。

PS C:\Users\Troll> Compare-Object (gc $file1) (gc $file2)

Windowsの一部ではありませんが、Visual Studioの開発者であれば、WinDiff(グラフィカル)が付属しています。

しかし、私の個人的なお気に入りはBeyondCompareで、価格は$ 30です。


4

DiffUtilsがおそらく最善の策です。Windowsでのdiffに相当します。

私の知る限りでは、組み込みの同等物はありません。


私もそれを使用しましたが、今日、そのページで提供されているかなり古いバージョン2.8.7にバグがあることを発見しました(特定のPDFファイルを比較すると、同等と報告されています)。そのため、firelightが提案する「git diff」を優先するようになりました。
2016年

4

COMPでエラーが発生する理由は、ユーティリティが、比較しているファイルが同じサイズであると想定しているためです。これを克服'/n'するには、比較する行数を指定できるオプションを使用できます。('comp /?'コマンドラインに入力してcompがサポートするオプションを参照してください。コマンドは次のようになります。

C:\>comp "filepath1" "filepath2" /a /l /n=(the number of lines you want to compare) /c 

COMPを使い続ける場合は、これで問題が解決するはずです。しかし、これは非常に大きなファイルでは問題になります。

compオプションですが、私はそれが原始的でFCあり、より良いオプションだと感じています。頻繁に必要な場合は、FORFILESFC一緒に使用して、本当に優れたfilecompareユーティリティを作成できます。

FCは、refに次のように使用されます。

C:\>fc /c(case insensistive) /lbn(number of errors allowed before you wanna stop compare) /n(display line number) "filename1" "filename2"

'fc /?' これが役立つことを願って見ることができる利用可能な多くのオプションがあります



0

diffコマンドに相当するウィンドウは、fc(ファイルコマプレ)コマンドです。

これを行うための基本的な手順は次のとおり
です。1. 2つのファイルをフォルダーに保存します(例file1.htmlおよびfile2.html)
。2.コマンドプロンプトを起動します
。3. fc file1Location file2Locationと入力します。

同じ上に詳細なチュートリアルを見つけました:

http://www.howtogeek.com/206123/how-to-use-fc-file-compare-from-the-windows-command-prompt/


0

次のツールがまさにあなたが必要としているものかどうかはわかりません。しかし、私は特定のファイルに対して、いくつかのオンラインツールを使用するのが好きです。これにより、運用システムに関係なく使用できます。次に例を示します。diffchecker.com

しかし、私のニーズに合わせて、プロジェクトのファイルの変更とログを追跡するための最良のツールはGITだと思います。チームで作業している場合は、自分のサーバーでオンラインでリポジトリを作成したり、BitbucketやGithubで使用したりできます。

それが誰かを助けることを願っています。


0

マシンにgitをインストールしている場合は、gitターミナルを開いて、diff通常どおりLinux コマンドを使用できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.