删除文件夹中另一个文件夹树中重复的文件

删除文件夹中另一个文件夹树中重复的文件

我有两个文件夹。其中一个文件夹(文件夹 1)包含图片,另一个文件夹(文件夹 2)包含多个包含图片的子文件夹。我想找到文件夹 1 中与文件夹 2 或其任何子文件夹中重复的图片并删除它们。将非重复图片移动到新文件夹(文件夹 3)也是一个选项。

我可以使用命令行执行此操作吗?我需要脚本吗?

我尝试使用 FreeFileSynch,但如果文件夹 2 有子文件夹,它就不起作用。

编辑:robocopy 的建议很有趣,但虽然它可以复制子文件夹及其内容,但我认为它不能只复制子文件夹内的文件。

答案1

这是正确的操作方法,无需外部下载。乍一看似乎很多,但一旦操作完成,就会发现非常简单。它适用于从 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 > Differences.txt”的命令将差异导入另一个文件。祝您玩得开心。

答案2

所以我找到的解决方案虽然不完美但却有效。

我使用命令行中的 forfiles 命令将文件夹 1 中的所有文件复制到临时文件夹中,从而展平了层次结构。然后,我将文件从临时文件夹移动到文件夹 2,并替换了其中的一些文件。移动的文件已被删除,因为它们已经在文件夹 1 中了。

1)在命令行中:forfiles /p C:\folder1 /s /c "cmd /c copy @path C:\temporaryfolder"

2) 在 Windows 资源管理器中:将文件从临时文件夹移动到文件夹 2 并替换现有文件。选择文件后,删除它们。剩余的文件是文件夹 2 中不存在于文件夹 1 中的文件。

相关内容