@echo off
setlocal enableextensions enabledelayedexpansion
rem 作者:rubble@126.com
rem 17:55 2009-4-14 版本:0.4
set dira=%~1
set dirb=%~2
if "%1" == "" (
echo 使用說明:請在命令行參數上指明兩個目錄,或在這里按提示輸入。
echo 命令行參數格式:批處理名 ^<目錄1^> ^<目錄2^>
echo.
set /p dira=請輸入第一個目錄的名字(可拖放并輸入回車):
)
echo.
if "%2" == "" (
echo 使用說明:請在命令行參數上指明兩個目錄,或在這里按提示輸入。
echo 命令行參數格式:批處理名 ^<目錄1^> ^<目錄2^>
echo.
set /p dirb=請輸入第二個目錄的名字(可拖放并輸入回車):
)
if "%dira%" == "" exit /b
if "%dirb%" == "" exit /b
for /F "delims=. tokens=1" %%A in ("%TIME%") do set startTime=%%A
for /F "delims=: tokens=1,2,3" %%A in ("%startTime%") do (
set startH=%%A
set startM=%%B
set startS=%%C
)
set TEMPDIR=TEMPMD5/
rd /Q /S %TEMPDIR% 1>NUL 2>NUL
md %TEMPDIR%
set mdfive=md5v4.txt
rem 已處理的文件數
set count=0
rem 文件夾 %dira% 和 %dirb% 里的文件總數
set total_count=0
rem 已處理的臨時文件數
set tmpf_count=0
rem 臨時文件總數,已知有 5 個了。其余的是 md5 值的個數
set tmpf_total_count=5
echo 第 1/2步,正在計算,請稍候……
echo 正在比較 %dira% 和 %dirb% 中的文件的 md5 值 > %mdfive%
set list_fn_md=%TEMPDIR%list_fn_md
set list_fn_nmd=%TEMPDIR%list_fn_nmd
set list_fn_oa=%TEMPDIR%list_fn_oa
set list_fn_ob=%TEMPDIR%list_fn_ob
set list_all_md=%TEMPDIR%list_all_md
call :COUNTFILES %dira%
call :COUNTFILES %dirb%
for /f "delims=" %%a in ('dir /b /a:-d "%dira%/*"') do (
set fn=%%~nxa
for /f "tokens=1 delims= " %%A in ('md5sum "%dira%/%%a"') do set mda=%%A
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%"
goto ALLDONE
rem 統計文件夾里的文件數目,放到全局變量 total_count 里
:COUNTFILES
if %1=="" goto :EOF
for /f %%a in ('dir /b /a:-d "%~1/*"') do (
set /a total_count=!total_count!+1
)
goto :EOF
rem 參數 %1 必須加雙引號
:OUTPUTLIST
if %1 == "" goto :EOF
if not exist %1 goto :EOF
set tcnt=0
for /f "tokens=1* delims= " %%a in (%~1) do (
echo %%a %%b >> %mdfive%
set /a tcnt+=1
)
echo !tcnt! >> %mdfive%
set /a tmpf_count+=1
call :PROGRESS !tmpf_count! !tmpf_total_count!
goto :EOF
rem 參數 %1 必須加雙引號
:OUTPUTLIST_MD
if %1 == "" goto :EOF
if not exist %1 goto :EOF
set /a tmpf_count+=1
call :PROGRESS !tmpf_count! !tmpf_total_count!
set md_count=0
for /f "tokens=1* delims= " %%a in (%~1) do (
echo %%a >> %mdfive%
set tcnt=0
for /f "tokens=1* delims= " %%A in (!TEMPDIR!%%a) do (
echo %%A %%B >> %mdfive%
set /a tcnt+=1
)
set /a tmpf_count+=1
call :PROGRESS !tmpf_count! !tmpf_total_count!
echo !tcnt! >> %mdfive%
set /a md_count+=1
echo. >> %mdfive%
)
echo %md_count% >> %mdfive%
goto :EOF
rem 函數:把 md5 值保存到一個名為 !list_all_md! 的文件里,
rem 并保證不保存重復的 md5 值
:ADDMDLIST
if %1 == "" goto :EOF
if exist "!list_all_md!" (
rem 這里的 delims 要么刪除,要么做成像下面這行的樣子,在等號后面加個空格
rem for /f "tokens=1 delims= " %%a in (!list_all_md!) do (
for /f "tokens=1 " %%a in (!list_all_md!) do (
if "%%a" == "%1" goto :EOF
)
)
echo %1 >> "!list_all_md!"
rem 記錄臨時文件總數
set /a tmpf_total_count+=1
goto :EOF
rem 函數:以 %1 為文件名,保存 %2
rem %1:在這個應用里是 md5 值
rem %2:md5 值為 %1 的文件
:ADDMDFN
if %1 == "" goto :EOF
if %2 == "" goto :EOF
echo %2 >> %1
goto :EOF
:PROGRESS
set tips=
set backspace=
set /a percent=%1*100/%2
set /a char=%1%%7
set /a bnum=%percent%/10
set /a snum=10-%bnum%
for /L %%a in (1, 1, %bnum%) do set /p=
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美国产日韩二区|
91精品国产综合久久久久久蜜臀|
欧美激情一区二区三级高清视频|
亚洲97在线观看|
中文字幕av一区二区三区谷原希美|
亚洲国产精品99|
亚洲精品99999|
8x拔播拔播x8国产精品|
亚洲人成网站免费播放|
www.日韩av.com|
亚洲人成电影网站色…|
亚洲成av人片在线观看香蕉|
日韩欧美在线视频观看|
亚洲的天堂在线中文字幕|
亚洲精品国产精品国自产在线|
亚洲免费视频在线观看|
欧美激情一级欧美精品|
国产裸体写真av一区二区|
亚洲一区二区黄|
一本大道久久加勒比香蕉|
欧美人交a欧美精品|
亚洲自拍偷拍区|
国产一区二区日韩精品欧美精品|
久久久亚洲成人|
国产一区二区三区在线看|
国产欧美久久一区二区|
成人xvideos免费视频|
国产精品久久久久不卡|
日韩在线免费av|
午夜欧美大片免费观看|
亚洲一区制服诱惑|
精品视频一区在线视频|
国内精品久久久久影院 日本资源|
欧美激情亚洲视频|
国内精品久久久久久久|
欧美午夜精品久久久久久久|
久久精品成人动漫|
精品无人区乱码1区2区3区在线|
久久精品久久久久电影|
欧美激情视频三区|
在线播放日韩精品|
欧美日韩成人精品|
91tv亚洲精品香蕉国产一区7ujn|
91精品免费视频|
欧美另类极品videosbest最新版本|
久久视频在线直播|
日韩av在线资源|
中文字幕欧美专区|
日韩av在线免费看|
国产精品色婷婷视频|
26uuu亚洲伊人春色|
欧美国产在线电影|
日韩黄色高清视频|
国产精品视频免费在线|
亚洲第一国产精品|
久久久久久久久爱|
日韩中文有码在线视频|
国产精品女视频|
中文日韩在线观看|
国产在线观看精品一区二区三区|
亚洲精品视频免费在线观看|
日本成人免费在线|
久久久91精品|
26uuu另类亚洲欧美日本一|
国产综合在线观看视频|
日本高清视频一区|
色诱女教师一区二区三区|
美女av一区二区|
国产精品久久久久久久久久|
中文精品99久久国产香蕉|
亚洲欧美日韩天堂|
日本成人在线视频网址|
亚洲精品影视在线观看|
国产精品自拍小视频|
国模精品视频一区二区|
欧美巨猛xxxx猛交黑人97人|
热99精品只有里视频精品|
亚洲成人a**站|
亚洲国产精久久久久久|
精品中文字幕久久久久久|
奇米成人av国产一区二区三区|
一本色道久久88亚洲综合88|
国产原创欧美精品|
欧美激情综合亚洲一二区|
奇门遁甲1982国语版免费观看高清|
国产精品一区=区|
日韩在线视频国产|
国产日韩精品一区二区|
国产丝袜一区二区三区|
欧美另类交人妖|
久久偷看各类女兵18女厕嘘嘘|
午夜免费在线观看精品视频|
国产精品1区2区在线观看|
亚洲成人网在线观看|
91精品久久久久久久久久|
57pao成人永久免费视频|
午夜免费在线观看精品视频|
人人爽久久涩噜噜噜网站|
欧美日韩中文字幕日韩欧美|
国产不卡一区二区在线播放|
中文字幕精品一区二区精品|
成人有码在线播放|
国产精品永久免费在线|
国产69精品久久久|
日韩在线观看你懂的|
91最新国产视频|
亚洲aⅴ男人的天堂在线观看|
亚洲免费福利视频|
最近的2019中文字幕免费一页|
欧美日韩精品在线|
最近2019中文免费高清视频观看www99|
九九久久精品一区|
在线精品高清中文字幕|
欧美巨乳在线观看|
国产成人午夜视频网址|
国产精品视频一区国模私拍|
国产亚洲精品91在线|
亚洲深夜福利视频|
亚洲a成v人在线观看|
麻豆国产va免费精品高清在线|
亚洲国产另类 国产精品国产免费|
久久久久久久久久久久av|
亚洲成人精品视频在线观看|
精品久久久久久久大神国产|
久久天天躁日日躁|
国产一区香蕉久久|
久久99青青精品免费观看|
国产免费一区二区三区在线观看|
欧美精品在线免费|
欧美黑人国产人伦爽爽爽|
国产成人精品免费视频|
欧美国产在线视频|
91久久久久久久久久久|
国产亚洲精品高潮|
亚洲成年网站在线观看|
欧美影院在线播放|
日韩在线中文视频|
国产精品亚洲欧美导航|
亚洲精品乱码久久久久久按摩观|
中文字幕欧美日韩在线|
91精品久久久久|
日本成人免费在线|
午夜精品一区二区三区在线|
91九色蝌蚪国产|
日韩电影免费观看在线观看|
亚洲一区制服诱惑|
欧美激情亚洲视频|
亚洲欧美精品suv|
亚洲成色999久久网站|
97香蕉久久夜色精品国产|
中文字幕av一区二区|
不卡av日日日|
456亚洲影院|
97在线观看视频国产|
亚洲国产精品99|
亚洲国产另类久久精品|
最近中文字幕mv在线一区二区三区四区|
色综合伊人色综合网|
成人黄色片在线|
日本久久91av|
欧美激情视频在线观看|
亚洲视频777|
国产日韩欧美夫妻视频在线观看|
成人精品一区二区三区|