【发布时间】:2016-11-14 14:41:50
【问题描述】:
在研究了一段时间后,我发现很多人都在尝试做同样的事情,但我还没有找到完整的答案,所以我希望有人可以帮助我们!
我想要做的是提供 2 个目录,A 和 B,并将 A 中的所有内容与 B 中的所有内容进行比较,如果 B 中有任何文件或文件夹不在 A 中,则生成一个输出文件,详细说明路径到 B 而不是 A 中的项目。从这里,我想使用项目列表,并说明这些路径中的任何项目是否包含与 2 个目录中的文件不同的内容(名称将相同,因此文档\folder\B.txt 包含与 desktop\folder\B.txt 不同的内容)生成另一个列表,显示不同之处或显示不同项目的文件路径,如果我无法显示不同的文本。
我已经考虑用.hash 来做这件事,但我不确定这是否是最好的方法?类似:
$SourceDocs = Get-ChildItem –Path C:\Documents1 | foreach {Get-FileHash –Path $_.FullName} $DestDocs = Get-ChildItem –Path C:\Documents2 | foreach {Get-FileHash –Path $_.FullName}
就我所拥有的物理比较而言,我最初是尝试进行 3 向比较,所以下面的代码并不准确,但我目前已经掌握了。
$folderA = 'C:\Users\USERNAME\Desktop\Folder A'
$folderB = 'C:\Users\USERNAME\Desktop\Folder B'
$folderC = 'C:\Users\USERNAME\Desktop\Folder C'
$AChild = Get-ChildItem $folderA -Recurse
$BChild = Get-ChildItem $folderB -Recurse
$CChild = Get-ChildItem $folderC -Recurse
Compare-Object -ReferenceObject $AChild -DifferenceObject $BChild, $CChildcode
在进一步研究之后,我发现使用 3.0 而不是 2.0 可能更好,这样我可以更有效地使用 -Dir。
有任何问题,请告诉我。
非常感谢任何帮助。
【问题讨论】:
标签: powershell directory comparison powershell-2.0 powershell-3.0