@echo off
setlocal
set "search_folder=C:\path\to\search\folder"
set "output_file=C:\path\to\output\file.txt"
echo Searching for duplicate files...
echo.
REM Создаем временный файл для хранения хэш-сумм и путей к файлам
set "temp_file=%temp%\duplicate_files_temp.txt"
del "%temp_file%" 2>nul
REM Перебираем все файлы в указанной папке и ее подпапках
for /R "%search_folder%" %%F in (*) do (
set "file_path=%%~F"
setlocal enabledelayedexpansion
set "file_hash="
REM Вычисляем хэш-сумму файла с помощью утилиты certutil
for /F "usebackq delims=" %%H in (`certutil -hashfile "%%F" MD5 ^| findstr /R /C:"[0-9a-fA-F]*$"`) do (
set "file_hash=%%H"
goto :break
)
:break
REM Проверяем, есть ли уже файл с такой хэш-суммой во временном файле
findstr /C:"!file_hash!" "%temp_file%" >nul
if errorlevel 1 (
REM Если файла с такой хэш-суммой нет, добавляем запись во временный файл
echo !file_hash! - !file_path! >> "%temp_file%"
) else (
REM Если файл с такой хэш-суммой уже есть, добавляем запись в выходной файл
echo !file_hash! - !file_path! >> "%output_file%"
)
endlocal
)
REM Удаляем временный файл
del "%temp_file%"
echo.
echo Duplicate file search completed. Results saved to "%output_file%".
echo.
endlocal