是否有开箱即用的方法来比较Windows 7中的两个文件夹?比较应显示子目录文件夹和子目录文件的差异。
是否有开箱即用的方法来比较Windows 7中的两个文件夹?比较应显示子目录文件夹和子目录文件的差异。
Answers:
我不是PowerShell专业版,但是这会让你在一个文件夹中存在哪些文件和文件夹,而不是另一个文件夹。
$test1 = get-childitem -path C:\Users\IrisDaniela\Documents\test1 -recurse
$test2 = get-childitem -path C:\Users\IrisDaniela\Documents\test2 -recurse
compare-object $test2 $test1 | Where {$_.SideIndicator -eq '=>'}
这给出了:
InputObject SideIndicator
----------- -------------
test1a =>
test.txt =>
您也可以省略过滤,并获得:
$test1 = get-childitem -path C:\Users\IrisDaniela\Documents\test1 -recurse
$test2 = get-childitem -path C:\Users\IrisDaniela\Documents\test2 -recurse
compare-object $test2 $test1
InputObject SideIndicator
----------- -------------
test1a =>
test.txt =>
test2b <=
Dunno,如果这是你正在寻找的,但也许它给你一个开始:)

要比较内容使用: compare-object (get-content a.text)(get-content b.txt) 等等
有一个很好的unix工具,名为diff,你可以从cygwin安装。
在胜利时,有一个名为超比较的gui工具。
您可以创建一个批处理文件,创建包含目录结构的两个临时文本文件,然后将这些临时文件与之比较 fc。
喜欢的东西(并根据喜好调整):
dir %1 /s /b /a /ong > temp1.txt
dir %2 /s /b /a /ong > temp2.txt
fc temp1.txt temp2.txt
dir命令的参数是: /s 递归到子文件夹 /b 不显示细节,你可能想省略这个 /ong 按名称排序,首先按目录排序
另外,请记住调整参数中的可能空格
编辑:如评论中所述,我们必须从列表文件文件中删除目录前缀。这可以使用批处理文件来完成,例如:
@echo off
setlocal EnableDelayedExpansion
for /F "delims==" %%a in (%1) do @(
set CURR_LINE=%%a
@echo !CURR_LINE:~%2!
)
endlocal
用作 unprefix text_file.txt prefix_length。所以举个例子 unprefix temp1.txt 5 将输出temp1.txt的内容,而不是每行的前5个字符。
dir /s /b 始终显示绝对路径,因此每行将具有不同的路径前缀,这将导致 fc 报告每一行。在比较之前,您将需要一个工具来去除路径前缀。
我用 FreeCommander (诺顿指挥官克隆)这样做。它提供“同步文件夹”功能,允许比较两个文件夹并可选择同步它们。比较选项包括“按CRC”,“按日期”,“按内容”,子文件夹和鬃毛更多。这是非常强大的,并帮助我很多时间完美地做你问的同样的事情。
一般来说,FreeCommander是非常强大的工具。我经常使用的另一个功能是搜索文件和文件夹。