@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