我需要比较2个文件夹“A”和“B”,并获取新添加或修改的文件和文件夹列表。
我尝试使用Winmerge软件,但它没有比较内部文件夹中的文件(因此我必须手动指向每个内部文件夹并进行比较)
有没有办法实现这一目标。
答案 0 :(得分:10)
这也是相同的PowerShell代码。
$dir1 = Get-ChildItem -Recurse -path C:\dir1
$dir2 = Get-ChildItem -Recurse -path C:\dir2
Compare-Object -ReferenceObject $dir1 -DifferenceObject $dir2
答案 1 :(得分:6)
对于Windows,您可以使用this solution。
这是正确的方法,没有外部 下载。起初看起来很多,但是一旦你做完了, 这很容易。
它适用于从7到95的所有Windows版本。 对于我们的示例,假设您正在比较两个名为“A”的目录 和'B'。
- 运行cmd.exe以获取命令提示符。 (在Windows 7中,powershell将不适用于此,仅供参考。)然后再次执行,以便您有两个 它们彼此相邻。
每个窗口中的- 转到要比较的目录。 (使用'cd'命令。如果你对此不满意,那么你 除非您愿意,否则应该使用外部实用程序 学习命令提示符。)
- 输入'dir / b> A.txt'进入一个窗口,'dir / b> B.txt'进入另一个。您现在将有两个文本文件列出每个文件的内容 目录。 / b标志表示裸,它剥离了目录列表 仅限文件名。
- 将B.txt移动到与A.txt。
相同的文件夹中- 输入'fc A.txt B.txt'。命令'fc'表示文件比较。这将吐出两个文件之间的差异列表,用 每个差异上方和下方的额外文本行,所以你知道在哪里 他们是。有关如何格式化输出的更多选项,请键入“fc” /?”在提示。您还可以将差异传递给另一个 通过使用类似'fc A.txt B.txt>的文件来存档differences.txt”。
醇>有 乐趣。
答案 2 :(得分:2)
这不一定比已经提到的其他选项更好,但它可能更适合某些用例。就我而言,在将这些差异从一个目录复制到另一个目录之前,我想看看有什么不同。此方法非常适合这种情况,因为 /L
选项意味着仅记录运行此命令时会发生的情况。
robocopy C:\dir1 C:\dir2 /MIR /FP /NDL /NP /L
您可以使用其他标志进一步细化输出格式,或更改用于比较的逻辑等。所有选项请参阅robocopy docs。
答案 3 :(得分:1)
我们多年来一直在使用Beyond Compare,它非常有用。您可以看到哪些文件是相同的,哪些文件只在文件夹“A”中,哪些文件只在文件夹“B”中,哪些文件不同(对于那些文件,您可以看到已经进行了哪些特定的修改)。
答案 4 :(得分:0)
查看本手册http://manual.winmerge.org/Compare_dirs.html#Compare_dirs_starting提供了有关如何以递归方式包含文件夹中所有文件的详细信息。
此外,你可以尝试超越比较工具diff。
答案 5 :(得分:0)
几年前,我制作了一个命令行实用程序 CrcCheckCopy,以帮助我验证大型数据副本的完整性。它读取源文件夹并生成所有文件的 CRC 列表。然后,使用这个列表,它可以验证另一个文件夹。
几年后我还用它来验证同一个文件夹,以确保没有意外删除或修改任何内容。
我从 here 免费赠送,以防遇到此问题的人想尝试一下。