-1

我想删除这段代码的一部分:set hash=certutil -hashfile %%A MD5. 我的意思是我需要删除cmd.exe:和CertUtil: -hashfile 命令成功完成的 MD5 哈希。从这段代码的输出。

我的完整代码(它是一个防病毒软件,但还不完整......):

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

不知道如何删除这些部分?

4

1 回答 1

2

您要删除的两行都包含一个冒号(与语言无关),因此您可以使用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 文件夹中的文件(还要仔细检查其他位置)!您可能会使您的系统无法使用(并删除任何新的或有意更改的文件)。

于 2021-05-17T13:35:18.067 回答