使用命令行|在文件中查找2个值CMD

时间:2012-06-29 06:15:23

标签: command-line batch-file cmd

以下代码允许我使用命令行(CMD)在我的所有文件中找到“错误”一词。

find /c "error" C:\MyFiles\*.txt

但我希望它同时寻找“错误”和“警告”这个词。

所以我想将这两行放在一行命令中。

find /c "error" C:\MyFiles\*.txt
find /c "warning" C:\MyFiles\*.txt

我不想看到2个结果集。

2 个答案:

答案 0 :(得分:7)

这应该有效(FINDSTR将搜索字符串拆分为空格,因此它会查找任何一个字。)

findstr "error warning" C:\MyFiles\*.txt

与此等效搜索一样:

findstr /c:"error" /c:"warning" C:\MyFiles\*.txt

但是,有这个错误:Why doesn't this FINDSTR example with multiple literal search strings find a match?。我不确定上述搜索是否符合指定错误可能影响结果的标准。 (我不确定搜索字符串之间是否有足够的重叠。)但最好是安全而不是抱歉。

您可以通过使搜索大小写不敏感(不确定是否符合您的要求)来消除错误的可能性:

findstr /i "error warning" C:\MyFiles\*.txt

或者您可以将搜索字符串转换为正则表达式。在您的情况下实现这一点非常简单,因为没有正则表达式元字符需要在搜索字符串中进行转义。

findstr /r "error warning" C:\MyFiles\*.txt

答案 1 :(得分:2)

在您的情况下,您可以简单地使用管道来实现 AND 运算符。

find /c "error" C:\MyFiles\*.txt | find /c "warning"

您的评论需要OR运算符

在这种情况下,我会使用findstr进行搜索并使用find /c进行计数

findstr "error warning" C:\MyFiles\*.txt | find /c /v ""