批处理如何将其输出到文本文件中?

时间:2015-09-02 23:34:44

标签: batch-file

这是我的完整代码

set /p path=Please input the full directory: 
cls
echo Your directory is being scanned, please wait.
fciv -md5 -add %path% -r -type *.exe -type *.dll -type *.scr -type *.sys>files.txt
del fciv.err
for /F "tokens=2" %%a in ('findstr /G:Database.dll files.txt') do del "%%a"
cls
echo scan done, if anything from the directory was deleted, it was malware.
pause

它将数据库与md5列表进行比较,我想做这样的事情:

for /F "tokens=2" %%a in ('findstr /G:Database.dll files.txt') do del "%%a">>output.txt
start output.txt

我正在尝试输出已删除的内容,如果您需要所有文件,我可以链接到它们。

然而这不起作用,我也尝试了写命令,但我无法弄清楚,有没有人有答案?

Database.dll示例:

e1380dd9a68923b3768eecb35800b643
ed65254b46f8b5a496385061de9f649b

files.txt示例

4ee7861af63771a281d111c4c7df7bbe c:\$recycle.bin\$i868a60.exe
d39c033d26cfafe53d05010675df2efb c:\$recycle.bin\$irsklc2.exe
69efee893a1088e87788f416832576fc c:\$recycle.bin\$isqaig0.exe
54e91698a85a5bd24bfc69c1454b7719 c:\$recycle.bin\$ivdl1ao.exe
22c2abba3905e8179a356658f7ba43e9 c:\$recycle.bin\$rsqaig0.exe

1 个答案:

答案 0 :(得分:1)

copy命令之前查看该文件是否存在,然后del - ete和echo它有条件地存在:

for /F "tokens=1*" %%a in ('findstr /G:Database.dll files.txt') do copy "%%~b" nul>nul && (del "%%~b" & echo %%~b)>>output.txt

del命令无法选择显示单个已删除的文件。此外,它不会修改ErrorLevel。所以你需要像这样解决。

注意:
由于copy只是正在读取存在检查的文件,如果您没有足够的访问权限,删除它可能仍会失败。如果这很重要,您可以使用

for /F "tokens=1*" %%a in ('findstr /G:Database.dll files.txt') do move /Y "%%~b" "%TEMP%\%%~nxb">nul && (del "%TEMP%\%%~nxb" & echo %%~b)>>output.txt

for身体的内部。