Наиболее эффективно переименовывать множество файлов в свои md5 в Windows 10

Я хочу переименовать множество файлов в их md5. Я уже написал скрипт bash для этой работы и использую git-scm ( https://git-scm.com/) для запуска скрипта в windows.

find WorkFolder -type f -iname '*.tif' -print0 | 
while IFS= read -r -d '' file; do
    hash=$(md5sum "$file"|cut -c1-32) 
    echo -e "\"$hash\"\t\"$file\"" >>dataPic.csv
    mv "$file" "OutputFolder/$hash.tif"
done

Этот скрипт выполняет 2 задания. 1. Он вычисляет файл md5, переименовывает файл в md5.tif и перемещает файл результатов в выходную папку. Неважно, насколько глубоко в подпапках размещен файл. Если два файла имеют одинаковый md5, два исходных и оба удаленных выходных каталога сохраняют только один. 2. Он также записывает новую строку в файл CSV, формат каждой строки

<file's md5> <tab> <file's original full path and name>

Это работает хорошо, но поскольку файлов становится все больше, скорость процесса сейчас слишком низкая.

Я пытаюсь написать пакет, чтобы сделать ту же работу. Но я не знаю, если certutil -hashfile MD5 на самом деле работает быстрее, чем md5sum, а может и медленнее. Написание партии также сложнее, чем я думал.

Я написал черновик:

FOR /r .\sourcefolder %%i in (*.tif) do (
    FOR /F %%F IN (`certutil -hashfile "%%i" SHA256 | findstr /V ":"`) DO (SET md5=%%F)
    set /a line=%md5%+" "+%%i
    echo %line% >>log.txt
    rename %%i .\outputfolder\%md5%.tif
)

0 ответов

Другие вопросы по тегам