=.= 这是一个测试过的版本,目前只有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 :eof
复制代码
|