我需要一个CMD脚本,它能够根据一个findtr命令搜索一个文本文件,该命令中有多个要搜索的字符串。
在这种情况下,我创建了一个文本文件 (kb.txt) ,其中包含命令的结果:
wmic qfe list
我需要的脚本将读取文件并使用findstr命令搜索它,如:
findstr "kb3199321 kb3175631 kb3155567 kb3143345"
如果找不到该字符串,它将输出未找到的字符串。对于那些已被发现的人也是如此。输出示例:
kb3199321 not found
kb3175631 found
kb3155567 found
kb3143345 not found
脚本应该遍历所有字符串的findstr命令(不仅仅是上面列出的4个字符串,它可能是几十到几百个),并且对于每个字符串,如果找到字符串,则回显。
如果findstr命令太有限(无法搜索超过一百个字符串),那么脚本应该读取另一个单独文本文件中的所有字符串(例如“searchfile.txt”) ,然后搜索“kb.txt”以查看它是否能够找到字符串,并回显上述相同的想要结果
答案 0 :(得分:0)
您无法搜索所有字符串并单独显示结果。您必须单独搜索每个字符串,然后检查返回值以了解字符串是否存在。
另一个问题是,wmic qfe list > kb.txt
以UTF-16输出文件,但是findstr
doesn't work with Unicode,因此您必须使用find
(这对于这种情况就足够了)。
您可以将字符串逐行搜索到搜索文件中,然后使用for /F
循环来浏览该文件的内容
@echo off
for /F %%f in (searchfile.txt) do (
find /i "%%f" kb.txt >NUL
if errorlevel 1 (
echo %%f not found
) else (
echo %%f found
)
)