如何在 Windows 7 中比较文件夹

如何在 Windows 7 中比较文件夹

在 Windows 7 中是否有现成的方法来比较两个文件夹?比较应显示子目录文件夹和子目录文件方面的差异。

答案1

我不是 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                                                      <=

不知道这是否是你在寻找的,但也许它能给你一个开始:)

示例中的文件夹 命令和结果

要比较内容,请使用: compare-object (get-content a.text)(get-content b.txt)等等

答案2

有一个很好的 unix 工具叫 diff,你可以从 cygwin 安装。该命令diff -urNw /path/to/dir1 /path/to/dir2可能可以满足你的要求。

在win上,有一个名为beyondCompare的gui工具。

答案3

您可以创建一个批处理文件,创建两个包含目录结构的临时文本文件,然后将这些临时文件与 进行比较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个字符。

答案4

这是一个cmd批处理脚本,它按文件/文件夹比较两个目录树小路并按文件尺寸- 显示两个目录中的差异(递归):

请参阅此答案:
https://superuser.com/questions/1407481/...

相关内容