40

我需要比较 2 个文件夹“A”和“B”并获取新添加或修改的文件和文件夹列表。

我尝试使用 Winmerge 软件,但它没有比较内部文件夹中存在的文件(所以我必须手动指向每个内部文件夹并进行比较)

有什么办法可以做到这一点。

4

5 回答 5

35

对于 Windows,您可以使用此解决方案

这是正确的方法,无需外部下载。一开始看起来很多,但是一旦你完成了,就很容易了。
它适用于从 7 到 95 的所有 Windows 版本。对于我们的示例,假设您正在比较两个名为“A”和“B”的目录。

  1. 运行 cmd.exe 以获取命令提示符。(在 Windows 7 中,powershell 对此不起作用,仅供参考。)然后再做一次,这样你就可以打开其中两个并排放置。
  2. 在每个窗口中转到您要比较的目录。(使用“cd”命令。如果您对此不满意,那么您可能应该使用外部实用程序,除非您想学习命令提示符的内容。)
  3. 在一个窗口中输入“dir /b > A.txt”,在另一个窗口中输入“dir /b > B.txt”。您现在将拥有两个列出每个目录内容的文本文件。/b 标志表示裸露,它将目录列表仅剥离为文件名。
  4. 将 B.txt 移动到与 A.txt 相同的文件夹中。
  5. 键入“fc A.txt B.txt”。命令“fc”表示文件比较。这将吐出两个文件之间差异的列表,每个差异的上方和下方都有一行额外的文本,因此您知道它们在哪里。有关如何格式化输出的更多选项,请键入“fc /?” 在提示下。您还可以使用“fc A.txt B.txt > Difference.txt”之类的方式将差异通过管道传输到另一个文件中。

玩得开心。

于 2013-10-23T06:33:05.803 回答
35

以下 PowerShell 代码比较两个文件夹的文件列表。它将检测重命名或新创建的文件和文件夹,但不会检测修改的数据或不同的时间戳:

$dir1 = Get-ChildItem -Recurse -path C:\dir1
$dir2 = Get-ChildItem -Recurse -path C:\dir2
Compare-Object -ReferenceObject $dir1 -DifferenceObject $dir2

资料来源:MS Devblog - Scripto 博士

第三方编辑

如何运行 PowerShell 脚本解释了如何在脚本中运行上述代码。

于 2020-06-07T13:37:40.107 回答
10

这不一定比已经提到的其他选项更好,但它可能更适合某些用例。就我而言,在将这些差异从一个目录复制到另一个目录之前,我想看看有什么不同。此方法非常适合,因为该/L选项意味着仅记录运行此命令时会发生的情况。

robocopy C:\dir1 C:\dir2 /MIR /FP /NDL /NP /L

您可以使用其他标志进一步细化输出格式,或更改用于比较的逻辑等。有关所有选项,请参阅robocopy 文档

于 2021-06-17T23:01:09.720 回答
9

我们多年来一直在使用 Beyond Compare,它非常有用。您可以看到哪些文件相同,哪些文件仅在文件夹“A”中,哪些文件仅在文件夹“B”中,以及不同的文件(对于这些文件,您可以看到已进行了哪些特定修改)。

于 2018-01-04T19:54:54.330 回答
2

几年前,我制作了一个命令行实用程序 CrcCheckCopy 来帮助我验证大型数据副本的完整性。它读取源文件夹并生成所有文件的 CRC 列表。然后,使用这个列表,它可以验证另一个文件夹。

几年后,我还使用它来验证同一个文件夹,以确保没有任何内容被意外删除或修改。

我从这里免费提供它,以防遇到这个问题的人想尝试一下。

于 2021-01-08T21:14:55.907 回答