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

2020-02-18 23:17发布

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

标签: windows cmd
9条回答
Root(大扎)
2楼-- · 2020-02-18 23:22

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:

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.

查看更多
欢心
3楼-- · 2020-02-18 23:24

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.

查看更多
霸刀☆藐视天下
4楼-- · 2020-02-18 23:25

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

查看更多
在下西门庆
5楼-- · 2020-02-18 23:26

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 
查看更多
萌系小妹纸
6楼-- · 2020-02-18 23:27

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

查看更多
家丑人穷心不美
7楼-- · 2020-02-18 23:28

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

查看更多
登录 后发表回答