在两个文件夹中,比较两个文件夹并输出丢失的文件

分享于 

3分钟阅读

电脑

  繁體 雙語

问题:

我想比较两个文件夹,严格用于文件名。 ( 文件内容 )。 我在 Windows 10上,希望使用 命令行 工具。

下面是可能解释问题的场景。


Folders


-------


source source2 


 - file_1 - file_1


 - file_2 - file_2


 - file_3 - file_4


 - file_5 - file_5


 - file_6 - file_7



Output should be:


-----------------


Source -> Missing files file_4 


Source2 -> Missing files file_3 



我做了一些研究,还有很多 diff 工具,但是我对比较文件内容不感兴趣。 我想要的只是比较两个文件夹并输出两个文件夹( 与另一个相比) 中缺少的文件。

,我不希望使用 Powershell。

谢谢你。


回答 1:

robocopy ( 包含在最近的Windows 版本中) 可以一次性执行这里操作:

给定 sourcesource2 以及一些常见的文件,而文件只存在于两个文件夹中,运行

robocopy source source2/L/NJH/NJS/NP/NS

收益率

D:Usersmetestsource *EXTRA Datei only_in_source2.txt Neue Datei only_in_source.txt

* 开头的行表示仅 source2 ( 独立于操作系统语言) 中的文件,其他行表示仅在 source 中的文件。

选项抑制各种输出项,/L 负责只列出差异,而不是复制。


回答 2:

对文件执行两个文件夹的dir/b/A-d,并将这些文件夹与findstr和 /VG: 选项进行比较

给定一个示例树:


> tree/f


X:.


│


└───Folders


 ├───source


 │ file_1


 │ file_2


 │ file_3


 │ file_5


 │ file_6


 │


 └───source2


 file_1


 file_2


 file_4


 file_5


 file_7



以下批处理 file:


:: Q:Test2019219SU_1407481.cmd


@echo off



Set"DirA=X:Folderssource"


Set"DirB=X:Folderssource2"



Dir/B/A-D"%DirA%*"> DirA.txt


Dir/B/A-D"%DirB%*"> DirB.txt



echo file(s) missing in %DirA%


findstr/VG:DirA.txt DirB.txt



echo fil(e) missing in %DirB%


findstr/VG:DirB.txt DirA.txt



生成这里输出:


> SU_1407481.cmd


file(s) missing in X:Folderssource


file_4


file_7


file(s) missing in X:Folderssource2


file_3


file_6




回答 3:

这里Powershell脚本执行你想要的操作。


$fso = Get-ChildItem -Recurse -path C:TempSource


$fsoBU = Get-ChildItem -Recurse -path C:TempSource2


Compare-Object -ReferenceObject $fso -DifferenceObject $fsoBU



这里讨论了一些其他的选项: https://stackoverflow.com/questions/3804109/what-is-the-best-way-to-compare-2-folder-trees-on-windows



COM  文件  files  OUT  FOLD  输出  
相关文章