Você pode usar o seguinte script:
for %%f in (*) do (
certutil -hashfile "%%f" MD5
)
Como mencionado em nesta página , o comando:
CertUtil -hashfile yourFileName MD5pode ser usado para obter o valor do hash MD5 para um arquivo específico.
Como posso encontrar os valores de hash MD5 para vários arquivos em uma pasta usando o cmd?
Você pode usar o seguinte script:
for %%f in (*) do (
certutil -hashfile "%%f" MD5
)
A maneira padrão de executar um comando em vários arquivos no CMD
é o comando for
.
Você pode obter informações de uso digitando for /?
.
Uma solução simples para o seu problema é
for %F in (*) do @certutil -hashfile "%F" MD5
Aqui %F
é uma variável.
Você pode escolher uma letra - qualquer única letra - para o nome da variável
(use o mesmo nome em ambos os lugares, claro) -
e observe que é sensível a maiúsculas e minúsculas ( %F
não é o mesmo que %f
).
Se você fizer isso em um script, use sinais de porcentagem dupla (por exemplo, %%F
).
As aspas em torno da segunda aparição da variável ( "%F"
)
(como sugerido por resposta da nullterminatedstring )
são necessários se algum dos nomes de arquivo contiver espaços.
Você pode colocar uma lista de nomes de arquivos e / ou curingas entre os parênteses; por exemplo,
for %F in (file1 file2 a* b*) do …
certutil
é um pouco detalhado.
Você pode querer diminuir a tagarelice dizendo
for %F in (*) do @certutil -hashfile "%F" MD5 | find /v "hashfile command completed successfully"
(para filtrar as mensagens command completed successfully
).
Eu sei que você pediu especificamente pelo cmd, mas se você estiver usando o Windows 8.1 ou superior, considere usar o Powershell:
Get-FileHash -Algorithm MD5 -Path (Get-ChildItem "\path\to\files\*.*" -Recurse)
O interruptor Recurse é, obviamente, opcional. Você pode canalizá-lo para Export-Csv
para obter uma lista de arquivos e seus hashes.
Você pode usar isso no Windows 7, mas é necessário atualizar o Powershell para a versão 4 primeiro.