=.= 这是一个测试过的版本,目前只有2个功能,列出“完全相同”“以及同名但不同路径的文件” | ;@echo off | | SETLOCAL ENABLEEXTENSIONS | | SETLOCAL ENABLEDELAYEDEXPANSION | | set "a_dir=d:\test\a\" | | set "b_dir=d:\test\b\" | | echo 这里保存“同名不同路径”的文件列表 >d:\A3.txt | | echo 这里保存“疑似同一功能文件”的文件列表 >d:\B1.txt | | echo 这里保存“完全相同”的文件列表 >d:\A1.txt | | | | pushd %b_dir% | | for /r %a_dir% %%a in (*.*) do call :exist %%a | | pause | | goto :eof | | | | | | ;检测同位置文件 | | :exist | | set xd_dir=%* | | set xd_dir=!xd_dir:%a_dir%=! | | if exist %b_dir%!xd_dir! ( | | echo %* # %b_dir%!xd_dir! >>d:\A1.txt | | ;同位置同名文件,放弃检测,也可调用FC对比,或者对比日期 | | ) else ( | | call :find %* | | ) | | goto :eof | | | | ;查找其他目录文件 | | :find | | set fn=%~nx1 | | dir /a:-d /s /b !fn! |findstr /v "%1" >d:\temp.txt | | if %ERRORLEVEL% EQU 0 ( | | for /f "tokens=1*" %%b in (d:\temp.txt) do call :cksize %1 %%b | | goto :eof | | ) | | ;这里是无同名文件的代码 | | goto :eof | | | | | | | | ;对比SIZE大小 | | :cksize | | if %~z1 equ %~z2 ( | | call :fc %1 %2 | | goto :eof | | ) | | call :cksx %1 %2 | | goto :eof | | | | | | ;如果目录里大多是网站程序这种文本文件,修改FC参数,可达到较高识别率。 | | :fc | | fc %1 %2 | | echo fc %~nx1 %~nx2 >>r.txt | | if %ERRORLEVEL% EQU 0 ( | | echo %1 # %2 >>d:\A3.txt | | goto :eof | | ) | | ;名字相同,路径不同,SIZE同,FC不同,稍后对比版本时间,或者第三方取得摘要信息 | | goto :eof | | | | :cksx | | ;对比属性,主要对比时间,作者,版本,公司等。 | | goto :eof | | | | | | :findsx | | ;这里搜不到同名文件,的后续步骤,寻找属性接近的文件 | | ;第一步是搜索SIZE相等的文件。 | | ;然后搜索其它属性。 | | ;但属性多的话,需要一段程序将文件属性対映到 | | goto :eofCOPY |
|