以下代码允许我使用命令行(CMD)在我的所有文件中找到“错误”一词。
find /c "error" C:\MyFiles\*.txt
但我希望它同时寻找“错误”和“警告”这个词。
所以我想将这两行放在一行命令中。
find /c "error" C:\MyFiles\*.txt
find /c "warning" C:\MyFiles\*.txt
我不想看到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 ""