带有文本文件输出的目录差异

带有文本文件输出的目录差异

看来我无法保存用于将某些 Subversion 存储库转换为 Mercurial 存储库的脚本,更具体地说是文件映射。

如何获取两个目录(添加/删除的目录、文件等)之间的差异并在文本文件中提供结果?

答案1

使用功能齐全的 diff 工具,例如差异合并或者kdiff3(均免费)您可以通过比较以下批处理文件的输出文件轻松检查差异。实际上,您需要提供两个目录作为参数,但您也可以直接在行中设置它们SET dir...- 例如SET dir1=c:\svnSET dir2=c:\hg。脚本从文件名中删除路径前缀,否则所有行都会有所不同。

@ECHO OFF
SetLocal EnableDelayedExpansion
SET dir1=%1
SET dir2=%2
ECHO. 2>dir1.txt
ECHO. 2>dir2.txt
FOR /f "tokens=*" %%F IN ('DIR /s /b /o:n %dir1%') DO ( 
    SET tmp=%%F
    ECHO !tmp:%dir1%\=! >> dir1.txt
)
FOR /f "tokens=*" %%F IN ('DIR /s /b /o:n %dir2%') DO ( 
    SET tmp=%%F
    ECHO !tmp:%dir2%\=! >> dir2.txt
)
EndLocal

然后只需比较两个输出文件dir1.txtdir2.txt

kdiff3 dir1.txt dir2.txt

相关内容