简单地说,我正在尝试获取给定目录中所有文件的哈希值。我通过调用 CertUtil 并运行来做到这一点:
for %F in (L:TestDirectory*)
do (certutil -hashfile "%F" MD5&echo.) >> L:certutilOutput.txt
这很好用,但仅适用于当前目录,因为它不会进入我的下一个子文件夹:"L:\TestDirectory\NetFolder\,其中包含另一组文件。我希望这能够下降几层。
我觉得我错过了一些非常简单的东西,任何帮助都值得赞赏。
若要基于原始代码并将其放入@dave_thompson_085引用的完整解决方案中,请将以下内容另存为 bat 文件:
@echo off
for /R "L:TestDirectory" %%f in (*) do (
certutil -hashfile "%%f" MD5
)>>L:certutilOutput.txt
聪明的头脑是一样的。在坐着3 +年没有答案之后,我们两个人同时研究这个问题的答案的可能性有多大?
我的变体功能是 (1( 可选地使用 FIND 来消除输出中可能不需要的混乱,以及 (2( 检查以删除预先存在的输出文件:
@echo off
if exist "L:certutilOutput.txt" del "L:certutilOutput.txt"
for /r "L:TestDirectory" %%F in (*) do certutil -hashfile "%%F" MD5 | find /i /v "certutil:" >> "L:certutilOutput.txt"
可悲的是,它仍然没有将文件名和哈希值放在一行上,这就是我一直在寻找的。