让我们帮忙!

让我们帮忙!

我正在尝试在 Windows 7 中查找文件名带有括号的文件。

但是,当我输入(*(*或或"("时,*"("*我要么得到零或得到所有文件。

微软的桌面搜索“高级查询语法”参考对此只字未提。

是什么赋予了?

答案1

使用以下语法:~="("

~=是转义字符,然后您可以将特殊字符(如,等)放在双(引号中。&?

答案2

知道了!

只需在搜索框中输入以下内容:

"*(*"

答案3

让我们帮忙!

对于任何 Windows 搜索问题,我的建议有两点:

  1. 阅读AQS(高级查询语法)文档,这样您就知道所有特殊字符的作用。
  2. 请注意,Windows Search 会将您的查询转换为精确的 AQS,除非您的查询非常具体,否则 Windows 会猜测您实际想要的 AQS。结果可能会令人惊讶!

首先,了解一下 AQS 的一些基础知识

默认情况下,字符串文件属性(文件名、作者等)使用 进行搜索COP_WORD_STARTSWITH $<,因此任何单词(以 和 更多 分隔spaces , - _ () [])以您的搜索词开头。其他非字符串属性(日期等)COP_EQUAL =默认使用 、 或精确匹配进行搜索(无通配符,*?是文字)。

其次,如果你正在搜索任何索引位置,则查询中的所有非索引位置都不会显示。

第三,单击地址栏以查看 AQS Windows Search 实际搜索的内容。您可以忽略位置信息和显示名称:它将进行百分比编码,因此请在类似这样的网站上解码https://www.url-encode-decode.com/

第四,没有记录,*并且?在 AQS 中行为不可预测,除非它们在~ COP_DOSWILDCARDS查询中(即非单词以 开头的 和 通配符*?会被解释为 。 Windows 搜索通常会将搜索转换为查询~。 例如,似乎通配符**?可以搜索带有 的字符串属性~,但**不带字母数字的则不会搜索任何内容。 此外,单个*中的非~查询也被视为带有 的通配符COP_WORD_STARTSWITH $<

让我们分析一下您的疑问

  1. (AQSsearch-ms:displayname=Search Results in Users&crumb=&crumb=location:C:\Users简化版crumb=

    嗯,不带引号的(是一个分组运算符,当您使用AND或 时OR,您没有对任何内容进行分组,因此 Windows 认为您的意思是对任何内容进行分组并搜索所有内容。

  2. *(*空气质量标准crumb=

    大多数以*windows 开头的 windows 搜索都会尝试转换为crumb=~~query_term(包含搜索)。*在包含查询中被视为正常。无论如何,在这种情况下,您会对一组无内容的内容使用通配符,因此 Windows 会搜索所有无内容的内容组(或所有内容!)

  3. "("空气质量标准crumb=System.Generic.String:"("

    引号搜索精确短语(整个单词或属性应匹配)并且是文字字符,除了*?""变成"。这会搜索以 开头的单词(,但由于单词不是,因此(它仅搜索仅以 开头的属性(

  4. *"("*AQScrumb=Rating:(>=1 <13) OR System.Generic.String:** System.Generic.String:"("* 这个很疯狂,但 Windows Search 会尝试将前缀*后跟某些特殊字符转换为星级。1-13 表示 1 星。另外请注意,根据我的测试,如果**前面或后面没有任何字母数字字符,它会搜索通配符,而不是搜索任何内容,而且不可预测。

    这个完整的查询意味着

    (1 星级评定或以零开头的单词)并且仅为(.的属性*不会匹配任何其他字符,因为整个属性必须是(.

    简单来说,1 星文件名为(

    **在查询中实际上(为我显示了一个非一星文件,但是当更改*****并返回时**,没有给出预期的结果(**不可预测)

其他答案

  1. ~="("空气质量标准crumb=System.Generic.String:~="("

    这不起作用,如果搜索量太大,Windows 似乎找不到任何东西。确实有效。本质上是找到一个只包含某个地方的filename:~="("文件名(

  2. "*(*"AQScrumb=filename:~~"*(*" OR System.Generic.String:"*(*" 成功了。文件名包含*(*和 通配符,或任何以通配符开头且带有 的属性词(。注意,~=和都~~表示包含。

答案4

使用此表达式搜索文件名,

filename: "*(1)*"

相关内容