How to do “diff -r” of UNIX in Windows Cmd Prompt?

2020-02-18 23:27发布

问题:

How do I compare two directories on cmd prompt of Windows m/c? I want equivalent of diff -r of UNIX.

回答1:

Install Cygwin and you can use diff -r on Windows.



回答2:

The comp command for Windows is what you're looking for.

Here the example:

To compare the contents of the directory C:\Reports with the backup directory \\Sales\Backup\April, type:

comp c:\reports \\sales\backup\april 


回答3:

The easiest way would probably be downloading diff for Windows: http://gnuwin32.sourceforge.net/packages/diffutils.htm
You could also do something like:

dir directory1 > dir1
dir directory2 > dir2
comp dir1 dir2

Also, some versions of Windows comes with windiff, however that is a GUI tool



回答4:

In Windows there is the fc command. I think diff is way better, but if you want to use only what came with the installation, well, here you go! :)



回答5:

You can install Gow, and you can run diff in the Windows Command Prompt.



回答6:

You can use windiff util included in Windows from NT version and up. Just run 'windiff' and a graphic tool will pop up.

File -> Compare directories

http://msdn.microsoft.com/en-us/library/aa266122(VS.60).aspx

This article describes how to use it from command line. Great benefit of this tool is that it is already included and you don't need to download and install anything.



回答7:

To compare data with command prompt you can use

COMP /a /l D:\Folder1\data.txt D:\Folder2\data.txt

There can be different options like specific numbers of lines to search and case insensitive search and even you can compare folders with command prompt. Here are other options to compare files and folders with command prompt.



回答8:

Partial solution with ROBOCOPY

A partial solution (and thus for me unfortunately a "non-solution", although I had high hopes for it initially), which may or may not be enough for you:

It seems the ROBOCOPY tool can be (ab-)used to work as a kinda poor man's recursive comparison; with the unfortunate limitation, that it apparently doesn't compare file contents. It seems to compare sizes, dates and optionally attributes. The magic incantation for this would be:

ROBOCOPY path1 path2 /e /l /ns /njs /njh /ndl /fp /log:result.txt /it

where options meaning seems to be:

  • /e - recurse, including empty directories;
  • /l - only print a log, don't modify files;
  • /ns /njs /njh - don't print file sizes, job summary, job header;
  • /ndl - "don't log folder names"
    • NOTE: this reportedly will result in skipping cases of missing/superfluous empty dirs; if you don't use this, those should get logged, but you'll have to somehow remove non-differing dirs by other means;
  • /log:result.txt - write results to 'result.txt' file; I think this can be omitted and result will be shown on standard output then.

Additional options:

  • /it - I think this should be added if you want to compare attributes too - see an explanation on what "tweaked" files are.

Warning: does NOT compare file contents

As I said above, this seems not to compare file contents, unfortunately. I verified this by running the following command first:

mkdir d1\a\b d2\a\b & echo x > d1\a\b\f & echo y > d2\a\b\f

Most of the time, this should produce files d1\a\b\f and d2\a\b\f with same timestamps, you can verify with dir d1\a\b\f d2\a\b\f. The robocopy call on d1 & d2 produced an empty result set for me.



回答9:

In Windows 10 you can run diff command in bash by Enabling the Linux Bash Shell



标签: windows cmd