亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > BAT > 正文

批處理方式實現的目錄比較工具

2020-07-26 20:25:28
字體:
來源:轉載
供稿:網友
更新日志:
v4:
1.增加了計算的進度顯示;
2.找了新版的 md5sum.exe,沒有對動態庫的依賴。

工具一:md5comv4.bat 接受兩個目錄參數,計算兩個目錄里每個文件的 md5 值,并給出報表文件 md5v4.txt,使用方法:
md5omv4.bat <目錄1> <目錄2>

根據這 md5comv4.bat 生成的報表文件 md5v4.txt,可以找到兩個目錄中
1:同名而且 md5 相同的文件;
2:同名但是 md5 不同的文件;
3:不同名但是 md5 相同的文件;
4:同一目錄中不同名但是 md5 相同的文件。

注意事項:
1:md5comv4.bat 不接受路徑帶有空格的目錄名,但是可以接受帶有空格的文件名;
2:md5 的計算由 md5sum.exe 完成;
3:md5comv4.bat 運行時會產生大量臨時文件,這些文件由工具自動維護,不必手工清理。

這個工具都是命令行方式、文本界面的,對于習慣使用圖形界面的朋友來說,可能不方便,因此,不推薦習慣使用圖形界面的朋友使用。
復制代碼 代碼如下:

@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| 国产日韩欧美夫妻视频在线观看| 成人精品一区二区三区|