Как создать хеш-значение MD5 для нескольких файлов в папке с помощью cmd

8207
Hari

Как уже упоминалось на этой странице, команда:

CertUtil -hashfile yourFileName MD5
может использоваться для получения значения хеша MD5 для определенного файла.

Как найти значения хеш-функции MD5 для нескольких файлов в папке с помощью cmd?

2

3 ответа на вопрос

4
testeaxeax

Вы можете использовать следующий скрипт:

for %%f in (*) do ( certutil -hashfile "%%f" MD5 ) 
Спасибо, что напомнили мне о цитатах. Я всегда помню, как использовать их в Unix, но иногда я забываю о Windows. G-Man 6 лет назад 0
2
G-Man

Стандартный способ выполнить команду для нескольких файлов в CMD - это forкоманда. Вы можете получить информацию об использовании, набрав for /?. Простое решение вашей проблемы

for %F in (*) do @certutil -hashfile "%F" MD5 

Здесь %Fпеременная. Вы можете выбрать букву - любую отдельную букву - для имени переменной (конечно, используйте одно и то же имя в обоих местах) и заметить, что она чувствительна к регистру ( %Fне совпадает с  %f). Если вы делаете это в скрипте, используйте двойные знаки процента (например, %%F).

Кавычки вокруг второго появления переменной ( "%F") (как предполагает ответ nullterminatedstring ) требуются, если любое из имен файлов содержит пробелы.

Вы можете поместить список имен файлов и / или символов подстановки в круглые скобки; например,

for %F in (file1 file2 a* b*) do … 

certutilнесколько многословно. Вы можете сократить болтовню, сказав

for %F in (*) do @certutil -hashfile "%F" MD5 | find /v "hashfile command completed successfully" 

(чтобы отфильтровать command completed successfullyсообщения).

0
Charles Burge

Я знаю, что вы спрашивали конкретно о cmd, но если вы используете Windows 8.1 или выше, рассмотрите возможность использования Powershell вместо этого:

Get-FileHash -Algorithm MD5 -Path (Get-ChildItem "\\path\to\files\*.*" -Recurse) 

Переключатель Recurse, конечно, не обязателен. Вы можете передать его, чтобы Export-Csvполучить список файлов и их хешей.

Вы можете использовать это в Windows 7, но сначала необходимо обновить Powershell до версии 4.