在 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/...