答案1
我知道您专门要求使用 cmd,但如果您使用的是 Windows 8.1 或更高版本,请考虑使用 Powershell:
Get-FileHash -Algorithm MD5 -Path (Get-ChildItem "\\path\to\files\*.*" -Recurse)
当然,Recurse 开关是可选的。您可以通过管道Export-Csv
获取文件及其哈希值的列表。
你能在 Windows 7 中使用它,但您必须先将 Powershell 升级到版本 4。
答案2
您可以使用以下脚本:
for %%f in (*) do (
certutil -hashfile "%%f" MD5
)
答案3
在 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
消息)。
答案4
我计算了驱动器上所有文件的哈希值,并使用 PowerShell 中的以下脚本将其导出为 .csv:
Get-ChildItem C: -Recurse |
Get-FileHash -Algorithm MD5 |
Export-Csv -Path C:\Users\yourname\Documents\Output\hashes.csv -NoTypeInformation
Import-Csv -Path C:\Users\yourname\Documents\Output\hashes.csv
在运行脚本之前,请确保在该位置创建 .csv 文件。脚本不会为您创建容器。运行之间无需清除 .csv 文件中的数据,它会自行清除。
运行几次以确保获得一致的数据输出。出于某种原因,我第一次成功的 .csv 输出没有提取所有数据。之后又测试了 2-3 次,并获得了一致的输出。
然后,您可以将 .csv 文件另存为 Excel 工作簿。.csv 文件可使用 Excel 打开。