Как удалить часть строки с помощью пакетного скрипта?
Я хочу удалить часть этого кода:
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 (а также перепроверяйте их в других местах)! Вы можете сделать вашу систему непригодной для использования (и удалить все новые или намеренно измененные файлы).