我有一个单词列表存储在名为 blacklist.txt 的文本文件中,我想查看另一个程序的输出并取出包含这些单词的所有行。
如果我这样做:
for /f %%G in (blacklist.txt) find /v /i "%%G" output.txt > newoutput.txt
我只得到最后一次查找的结果
如果我这样做:
for /f %%G in (blacklist.txt) find /v /i "%%G" output.txt > output.txt
我希望它更新文件并运行下一个查找,系统地过滤掉所有列入黑名单的字符串。然而事实并非如此,在运行第二次查找后,该文件将变为空白...
以前有人尝试过做类似的事情吗?
最佳答案
这就是我的意思。将以下内容放入批处理文件中并运行它:
for /f %%G in (blacklist.txt) do call :finder %%G
goto :EOF
:finder
find /v /i "%1" output.txt > output.tmp
copy output.tmp output.txt
output.txt 将包含不匹配的行。它还将包含多次输入文件的名称。为了避免这种情况,您可以使用 findstr 而不是 find 命令。
关于batch-file - 批处理文件find解析出关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5344043/