web-dev-qa-db-fra.com

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

Comme mentionné dans cette page , la commande:

Certutil -hashfile yourfileName Md5

Comment puis-je trouver les valeurs de hachage MD5 pour plusieurs fichiers dans un dossier à l'aide de CMD?

5
Hari

Vous pouvez utiliser le script suivant:

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

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

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

Ici %F est une variable. Vous pouvez choisir une lettre - tout lettre lettre - pour le nom de la variable (utilisez le même nom dans les deux endroits, bien sûr) - et notez qu'il est sensible aux majuscules et minuscules (%F n'est pas la même chose que %f). Si vous le faites dans un script, utilisez des panneaux de signalisation double pour cent (par exemple, %%F).

Les citations autour de la deuxième apparition de la variable ("%F") (comme suggéré par Nullterminatedsstringsstringsstring ) sont nécessaires si l'un des noms de fichiers contient des espaces.

Vous pouvez mettre 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 …

certutil est un peu verbeux. 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 le command completed successfully messages).

Je sais que vous avez demandé spécifiquement pour CMD, mais si vous utilisez Windows 8.1 ou plus, envisagez d'utiliser PowerShell à la place:

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

Le commutateur RECUSSE est bien sûr facultatif. Vous pouvez le piper à Export-Csv Pour obtenir une liste de fichiers et de leurs haubans.

Vous CAN Utilisez ceci sous Windows 7, mais vous devez d'abord mettre à niveau PowerShell vers la version 4.

3
Charles Burge