set /a count=!count!+1
call :PROGRESS !count! !total_count!
if "!mda:~0,1!" == "" set mda=!mda:~1,1024!
rem 以 !mda! 为文件名,记录 md5 为 !mda! 的文件
call :ADDMDFN "%TEMPDIR%!mda!" "%dira%!fn!"
rem 把 md5 值记录到文件里,保证不重复
call :ADDMDLIST !mda!
if exist "%dirb%!fn!" (
for /f "tokens=1 delims= " %%A in ('md5sum "%dirb%!fn!"') do set mdb=%%A
set /a count=!count!+1
call :ADDMDFN "%TEMPDIR%!mdb!" "%dirb%!fn!"
call :PROGRESS !count! !total_count!
if "!mdb:~0,1!" == "" set mdb=!mdb:~1,1024!
if "!mda!" == "!mdb!" (
rem 记录文件名相同并且 md5 相同的文件
echo !mda! !mdb! !fn! >> "!list_fn_md!"
) else (
rem 记录文件名相同但 md5 不相同的文件
echo !mda! !mdb! !fn! >> "!list_fn_nmd!"
call :ADDMDLIST !mdb!
)
) else (
rem 记录只在 %dira% 中出现的文件
echo !mda! !fn! >> "!list_fn_oa!"
)
)
for /f "delims=" %%a in ('dir /b /a:-d "%dirb%*"') do (
set fn=%%~nxa
if not exist "%dira%!fn!" (
for /f "tokens=1 delims= " %%A in ('md5sum "%dirb%%%a"') do set mdb=%%A
if "!mdb:~0,1!" == "" set mdb=!mdb:~1,1024!
rem 记录只在 %dirb% 中出现的文件
echo !mdb! !fn! >> "!list_fn_ob!"
rem 把 md5 值记录到文件里,保证不重复
call :ADDMDLIST !mdb!
call :ADDMDFN "%TEMPDIR%!mdb!" "%dirb%!fn!"
set /a count=!count!+1
call :PROGRESS !count! !total_count!
)
)
echo 第 2/2步,正在统计,请稍候……
echo 统计:>>%mdfive%
echo 左:%dira% >> %mdfive%
echo 右:%dirb% >> %mdfive%
if not exist "%list_fn_md%" set /a tmpf_total_count-=1
if not exist "%list_fn_nmd%" set /a tmpf_total_count-=1
if not exist "%list_fn_oa%" set /a tmpf_total_count-=1
if not exist "%list_fn_ob%" set /a tmpf_total_count-=1
if not exist "%list_all_md%" set /a tmpf_total_count-=1
echo 两个目录中都存在且 md5 相同的文件:>> %mdfive%
call :OUTPUTLIST "%list_fn_md%"
echo ===============================================================================================>> %mdfive%
echo 左:%dira% >> %mdfive%
echo 右:%dirb% >> %mdfive%
echo 两个目录中都存在但 md5 不相同的文件:>> %mdfive%
call :OUTPUTLIST "%list_fn_nmd%"
echo ===============================================================================================>> %mdfive%
echo 只在目录 %dira% 中存在的文件:>> %mdfive%
call :OUTPUTLIST "%list_fn_oa%"
echo ===============================================================================================>> %mdfive%
echo 只在目录 %dirb% 中存在的文件:>> %mdfive%
call :OUTPUTLIST "%list_fn_ob%"
echo ===============================================================================================>> %mdfive%
echo 以 md5 汇总的文件列表:>> %mdfive%
call :OUTPUTLIST_MD "%list_all_md%"









