3

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

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

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

所以我想把这两行作为 1 行命令。

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

我不想看到 2 个结果集。

4

2 回答 2

8

这应该可以工作(FINDSTR在空格处拆分搜索字符串,因此它会查找任一单词)。

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

与此等效搜索一样:

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

但是,有一个错误:为什么这个带有多个文字搜索字符串的 FINDSTR 示例找不到匹配项?. 我不确定上述搜索是否符合指定错误何时可能影响结果的标准。(我不确定搜索字符串之间是否有足够的重叠。)但安全总比抱歉好。

您可以通过使搜索不区分大小写(不确定是否满足您的要求)来消除错误的可能性:

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

或者您可以将搜索字符串转换为正则表达式。在您的情况下,这很容易实现,因为在您的搜索字符串中没有需要转义的正则表达式元字符。

findstr /r "error warning" C:\MyFiles\*.txt
于 2012-06-29T11:32:11.597 回答
3

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

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

根据您的评论,您需要一个OR操作员

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

findstr "error warning" C:\MyFiles\*.txt | find /c /v ""
于 2012-06-29T07:19:07.127 回答