为什么这个带有多个文字搜索字符串的FINDSTR示例找不到匹配?

dbe*_*ham 8 cmd batch-file findstr

以下FINDSTR示例无法找到匹配项.

echo ffffaaa|findstr /l "ffffaaa faffaffddd"
Run Code Online (Sandbox Code Playgroud)

为什么?

dbe*_*ham 13

显然这是一个长期存在的FINDSTR错误.我认为这可能是一个严重的错误,具体取决于具体情况.

我已经确认命令在两台不同的Vista机器,Windows 7机器和XP机器上都失败了.我发现这个发现- 打破了??? 报告类似搜索的链接在Windows Server 2003上失败,但在Windows 2000上成功.

我做了很多实验,似乎必须满足以下所有条件才能发生故障:

  • 搜索使用多个文字搜索字符串
  • 搜索字符串的长度不同
  • 短搜索字符串与较长的搜索字符串有一些重叠
  • 搜索区分大小写(无/I选项)

在我看到的每一次失败中,它总是失败的较短搜索字符串之一.

如何指定搜索字符串无关紧要.使用多个/C:"search"选项以及选项也可以获得相同的错误结果/G:file.

我能够想出的唯一3个解决方法是:

  • /I如果您不关心案例,请使用该选项.显然这可能无法满足您的需求.

  • 使用/R正则表达式选项.但是,如果你这样做,你必须确保你在搜索中转义任何元字符,以便它匹配文字搜索的预期结果.这也可能有问题.

  • 如果您使用该/V选项,则使用多个管道FINDSTR命令,每个命令包含一个搜索字符串,而不是一个具有多个搜索的FINDSTR.如果您有许多要使用该/G:file选项的搜索字符串,这也可能是一个问题.

我讨厌这个错误!!!!

- 请参阅Windows FINDSTR命令的未记录的功能和限制是什么?获取FINDSTR特性的完整列表.

  • 小心,dbenham,你很可能成为'findstr`大师,就像Skeet是C#guru一样:-) (3认同)
  • `findstr` - 只是说不! (2认同)