Comment générer une valeur de hachage MD5 pour plusieurs fichiers d'un dossier à l'aide de cmd

3

Comme mentionné dans cette page , la commande:

CertUtil -hashfile yourFileName MD5
peut être utilisé pour obtenir la valeur de hachage MD5 pour un fichier particulier.

Comment trouver les valeurs de hachage MD5 pour plusieurs fichiers d'un dossier à l'aide de cmd?

Hari
la source

Réponses:

5

Vous pouvez utiliser le script suivant:

for %%f in (*) do (
certutil -hashfile "%%f" MD5
)
testeaxeax
la source
Merci de me rappeler les citations. Je me souviens toujours de les utiliser sous Unix, mais parfois j'oublie Windows.
G-Man
2

La méthode standard pour exécuter une commande sur plusieurs fichiers dans CMD est la forcommande. Vous pouvez obtenir des informations d'utilisation en tapant for /?. Une solution simple à votre problème est

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

Voici %Fune variable. Vous pouvez choisir une lettre - une seule lettre - le nom de la variable (utilisez le même nom dans les deux endroits, bien sûr) - et notez qu'il est sensible à la casse %F(n'est pas le même que  %f). Si vous faites cela dans un script, utilisez des signes de pourcentage double (par exemple, %%F).

Les guillemets autour de la deuxième apparence de la variable ( "%F") (comme suggéré par la réponse de nullterminatedstring ) sont obligatoires si l'un des noms de fichiers contient des espaces.

Vous pouvez placer une liste de noms de fichiers et / ou de caractères génériques entre les parenthèses; par exemple,

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

certutilest quelque peu prolixe. Vous voudrez peut-être réduire le bavardage en disant

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

(pour filtrer les command completed successfullymessages).

G-Man
la source
1

Je sais que vous avez spécifiquement demandé cmd, mais si vous utilisez Windows 8.1 ou une version ultérieure, envisagez plutôt d'utiliser Powershell:

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

Le commutateur Recurse est bien entendu facultatif. Vous pouvez le diriger Export-Csvpour obtenir une liste de fichiers et leurs hachages.

Vous pouvez l' utiliser dans Windows 7, mais vous devez d'abord mettre à niveau Powershell vers la version 4.

Charles Burge
la source