Как сделать так, чтобы CertUtil рекурсивно заходил в мои папки и подпапки

Проще говоря, я пытаюсь получить хэш всех моих файлов в данном каталоге. Я делаю это, вызывая CertUtil и запускаю:

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

Это работает хорошо, но только для текущего каталога, так как он не входит в мою следующую подпапку: "L:\TestDirectory\NetFolder\", которая содержит другой набор файлов. Я хотел бы, чтобы это было в состоянии пройти несколько слоев.

Я чувствую, что упускаю что-то очень простое, любая помощь приветствуется.

2 ответа

Чтобы основывать это на исходном коде и поместить его в полное решение, на которое ссылается @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"

К сожалению, он по-прежнему не помещает имя файла и хэш в одну строку, что я и искал .

Другие вопросы по тегам