2

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

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

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

3 ответа3

4

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

for %%f in (*) do (
certutil -hashfile "%%f" MD5
)
2

Стандартный способ выполнить команду для нескольких файлов в 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

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .