Я хотел бы записать хеши md5 для всех файлов в каталоге и его подкаталогах в файл.В идеале, реплицировать вывод команды unix find . -type f -exec md5sum {} +
(т.е. два столбца: хэши и относительные пути к файлам).
Я смотрел на команду CMD CertUtil -hashfile afile.txt MD5
, но застрял с полными указанными путями к файламна dir /A:-D /B /S
.Я нашел следующий ответ с помощью PowerShell: https://superuser.com/a/1249418. Я использовал CMD очень редко, и это моя первая попытка PowerShell.
Get-FileHash -Algorithm MD5 -Path (Get-ChildItem "*.*" -Recurse | Resolve-Path -Relative | Tee-Object -Variable y) | select hash | Out-File C:\Users\MYUSERNAME\Desktop\MYFOLDER\temphashes.txt
$x = (Get-Content C:\Users\MYUSERNAME\Desktop\MYFOLDER\temphashes.txt).ToLower() | select -skip 3 | ?{$_.Trim(" `t")}
$i = 0; $x | ForEach-Object {($_, $y[$i]) -join " "; $i++} | Out-File C:\Users\MYUSERNAME\Desktop\MYFOLDER\hashes.txt
Есть ли лучший способ получить хэши и относительныепути в PowerShell (или CMD)?Или, по крайней мере, можно ли перезаписать промежуточный файл `temphashes.txt 'конечным выводом?
Редактировать: можно ли сделать хэши строчными, а заголовки и лишние завершающие пустые строки удалить (см. Вторую строкув моей попытке) так файл выглядит так:
d41d8ce98f00b204e9800988ecf8427e .\aSubDirectory\anotherfile.txt
4615fd7b904c04e94cbeced23361c778 .\afile.txt