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

后端 未结 9 1120
遥遥无期
遥遥无期 2020-12-28 14:17

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

9条回答
  •  陌清茗
    陌清茗 (楼主)
    2020-12-28 15:02

    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.

提交回复
热议问题