Как сделать так, чтобы 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"
К сожалению, он по-прежнему не помещает имя файла и хэш в одну строку, что я и искал .