Я хочу переименовать множество файлов в их 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
)