我有两个包含所有相同文件和子文件夹的文件夹,但是每个文件中的内容可能已更改。我想编写一个批处理文件,它将搜索每个文件并查找任何差异。什么是我想做的最好的工具?
最佳答案
不需要批处理文件。单个FC命令可以执行您想要的操作:
fc folder1\* folder2\*
如果需要,可以更具体地描述第一个文件夹中的文件掩码。例如
folder1\*.txt
。该命令将报告在folder1中存在但在folder2中丢失的文件。 folder2中的多余文件将被忽略。
FC命令有许多选项。在命令提示符下输入
HELP FC
或FC /?
以获取更多信息。编辑
扩展解决方案以支持子文件夹有点棘手。使用FOR/R迭代给定根目录的文件夹层次结构很容易。问题在于获取相对路径,以便可以将层次结构应用于另一个根。
最简单的解决方案是改用FORFILES,因为它直接支持相对路径。但是FORFILES是... S L O W:/
在这一点上,批处理文件是有意义的:
@echo off
setlocal
set "folder1=c:\path\To\Folder1\Root"
set "folder2=d:\path\To\Folder2\Root"
set "fileMask=*"
for /f "delims=" %%F in (
'echo "."^&forfiles /s /p "%folder1%" /m "%fileMask%" /c "cmd /c if @isdir==TRUE echo @relpath"'
) do fc "%folder1%\%%~F\%fileMask%" "%folder2%\%%~F\*"
关于windows - 比较两个文件夹及其子文件夹批处理文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17599576/