@echo off
chcp 65001
setlocal EnableDelayedExpansion
REM 定义变量
set "file1=file1.txt"
set "file2=file2.txt"
set "outputFile=result.txt"
set "tempFile1=temp1.txt"
set "tempFile2=temp2.txt"
REM 清空输出文件
> "%outputFile%" echo.
REM 提取文件中的MD5值和路径
for /F "usebackq tokens=1* delims=:" %%a in ("%file1%") do (
set "path=%%a"
set "md5=%%b"
REM 去掉路径后的空格
for /f "tokens=* delims= " %%c in ("!path!") do set "path=%%c"
REM 去掉MD5前的空格
for /f "tokens=* delims= " %%d in ("!md5!") do set "md5=%%d"
echo !md5! !path! >> "%tempFile1%"
)
for /F "usebackq tokens=1* delims=:" %%a in ("%file2%") do (
set "path=%%a"
set "md5=%%b"
REM 去掉路径后的空格
for /f "tokens=* delims= " %%c in ("!path!") do set "path=%%c"
REM 去掉MD5前的空格
for /f "tokens=* delims= " %%d in ("!md5!") do set "md5=%%d"
echo !md5! !path! >> "%tempFile2%"
)
REM 比较文件
set "countSame=0"
set "countDiff=0"
echo 相同md5文件: >> "%outputFile%"
for /F "tokens=1,* delims= " %%a in (%tempFile1%) do (
findstr /B /C:"%%a " "%tempFile2%" >nul
if !errorlevel! equ 0 (
echo txt1中的路径: %%b >> "%outputFile%"
for /F "tokens=1,* delims= " %%c in ('findstr /B /C:"%%a " "%tempFile2%"') do (
echo txt2中的路径: %%d >> "%outputFile%"
)
echo md5值: %%a >> "%outputFile%"
echo. >> "%outputFile%"
set /A countSame+=1
)
)
echo. >> "%outputFile%"
echo 不同md5文件: >> "%outputFile%"
for /F "tokens=1,* delims= " %%a in (%tempFile1%) do (
findstr /B /C:"%%a " "%tempFile2%" >nul
if !errorlevel! neq 0 (
echo txt1中的路径: %%b >> "%outputFile%"
echo md5值: %%a >> "%outputFile%"
echo. >> "%outputFile%"
set /A countDiff+=1
)
)
REM 输出结果统计
set /A countSame=%countSame%
set /A countDiff=%countDiff%
echo 相同md5文件一共有 %countSame% 个 >> "%outputFile%"
echo. >> "%outputFile%"
echo 不同md5文件一共有 %countDiff% 个 >> "%outputFile%"
REM 显示结果文件
type "%outputFile%"
REM 清理临时文件
del "%tempFile1%"
del "%tempFile2%"
endlocal
pause
再次优化shell
最新推荐文章于 2024-09-06 22:20:29 发布