批量脚本搜索文本文件中的字符串;找到或找不到回声字符串

时间:2016-11-29 03:00:20

标签: batch-file cmd

我需要一个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”以查看它是否能够找到字符串,并回显上述相同的想要结果

1 个答案:

答案 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
    )
)