Как удалить часть строки с помощью пакетного скрипта?

Я хочу удалить часть этого кода: set hash=certutil -hashfile %%A MD5. Я имею в виду, что мне нужно удалить MD5-хэш cmd.exe: и команда CertUtil: -hashfile успешно завершена. из вывода этого кода.

мой полный код (это антивирус, но еще не полный ...):

      For /f "tokens=*" %%A in ('dir /b /s') do (
      set hash=certutil -hashfile %%A MD5
      findstr %hash% C:\Users\Sepehr\Desktop\data.txt && (
      echo %%A is Infected!
      echo Deleting %%A
      del /f /q %%A
      ) || (
      echo %%A is Clean!
      )
)
pause

Не знаете, как удалить эти детали?

1 ответ

Решение

Обе строки, которые вы хотите удалить, содержат двоеточие (независимо от языка), поэтому вы можете отфильтровать свой хеш с помощью find /v ":". Затем просто найдите это в файле data.txt с помощью `findstr /g:"":

      For /r "C:\" "delims=" %%A in (*) do (
  certutil -hashfile "%%A" MD5|find /v ":"|findstr /G:"C:\Users\Sepehr\Desktop\data.txt" && (
    echo hash is stored for %%A
  ) || (
    echo hash is unknown for %%A
  )
) 

Конечно, есть возможности для улучшения, но это рабочий скелет.

Небольшой совет: не удаляйте «зараженные» файлы, по крайней мере, в папках Windows и Program (а также перепроверяйте их в других местах)! Вы можете сделать вашу систему непригодной для использования (и удалить все новые или намеренно измененные файлы).

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