国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > BAT > 正文

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

2020-06-09 14:16:14
字體:
來源:轉載
供稿:網友
更新日志:
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!
)
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 柘城县| 瓦房店市| 东兴市| 浦城县| 黄石市| 山东省| 永修县| 若尔盖县| 茌平县| 青田县| 沙雅县| 辛集市| 咸丰县| 察雅县| 汾阳市| 江孜县| 肇州县| 漳浦县| 辽阳市| 洪湖市| 金平| 教育| 穆棱市| 崇文区| 武鸣县| 安西县| 桃源县| 永城市| 凭祥市| 荥阳市| 都安| 施甸县| 松江区| 滦南县| 金坛市| 邛崃市| 大余县| 河北区| 长垣县| 库车县| 甘肃省|