1

简而言之,我试图对给定目录中的所有文件进行哈希处理。我通过调用 CertUtil 并运行来做到这一点:

for %F in (L:\TestDirectory\*) 
do (certutil -hashfile "%F" MD5&echo.) >> L:\certutilOutput.txt

这很好用,但仅适用于当前目录,因为它不会进入我的下一个子文件夹:“L:\TestDirectory\NetFolder\ 其中包含另一组文件。我希望它能够向下几层。

我觉得我错过了一些非常简单的东西,感谢任何帮助。

4

2 回答 2

0

要将其基于原始代码并将其放入 @dave_thompson_085 引用的完整解决方案中,请将以下内容另存为 bat 文件:

@echo off
for /R "L:\TestDirectory" %%f in (*) do ( 
  certutil -hashfile "%%f" MD5
)>>L:\certutilOutput.txt
于 2021-12-09T00:05:13.063 回答
0

聪明的头脑是一样的。在 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"

可悲的是,它仍然没有将文件名和哈希放在一行上,这正是我一直在寻找的。

于 2021-12-09T00:44:25.740 回答