我有两个包含所有相同文件和子文件夹的文件夹,但每个文件中的内容可能已更改。我想编写一个批处理文件来搜索每个文件并查找任何差异。什么是我想做的事情的最佳工具?
最佳答案
不需要批处理文件。一个 FC 命令可以做你想做的事:
fc folder1\* folder2\*
如果需要,您可以更具体地指定第一个文件夹中的文件掩码。例如 folder1\*.txt
。
该命令将报告文件夹 1 中存在但文件夹 2 中丢失的文件。 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/