我正在尝试在 Windows 7 中查找文件名带有括号的文件。
但是,当我输入(
或*(*
或或"("
时,*"("*
我要么得到零或得到所有文件。
微软的桌面搜索“高级查询语法”参考对此只字未提。
是什么赋予了?
答案1
使用以下语法:~="("
。
~=
是转义字符,然后您可以将特殊字符(如,等)放在双(
引号中。&
?
答案2
知道了!
只需在搜索框中输入以下内容:
"*(*"
答案3
让我们帮忙!
对于任何 Windows 搜索问题,我的建议有两点:
- 阅读AQS(高级查询语法)文档,这样您就知道所有特殊字符的作用。
- 请注意,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
$<
。
让我们分析一下您的疑问
(
AQSsearch-ms:displayname=Search Results in Users&crumb=&crumb=location:C:\Users
简化版crumb=
嗯,不带引号的
(
是一个分组运算符,当您使用AND
或 时OR
,您没有对任何内容进行分组,因此 Windows 认为您的意思是对任何内容进行分组并搜索所有内容。*(*
空气质量标准crumb=
大多数以
*
windows 开头的 windows 搜索都会尝试转换为crumb=~~query_term
(包含搜索)。*
在包含查询中被视为正常。无论如何,在这种情况下,您会对一组无内容的内容使用通配符,因此 Windows 会搜索所有无内容的内容组(或所有内容!)"("
空气质量标准crumb=System.Generic.String:"("
引号搜索精确短语(整个单词或属性应匹配)并且是文字字符,除了
*
、?
和""
变成"
。这会搜索以 开头的单词(
,但由于单词不是,因此(
它仅搜索仅以 开头的属性(
*"("*
AQScrumb=Rating:(>=1 <13) OR System.Generic.String:** System.Generic.String:"("*
这个很疯狂,但 Windows Search 会尝试将前缀*
后跟某些特殊字符转换为星级。1-13 表示 1 星。另外请注意,根据我的测试,如果**
前面或后面没有任何字母数字字符,它会搜索通配符,而不是搜索任何内容,而且不可预测。这个完整的查询意味着
(1 星级评定或以零开头的单词)并且仅为
(
.的属性*
不会匹配任何其他字符,因为整个属性必须是(
.简单来说,1 星文件名为
(
**
在查询中实际上(
为我显示了一个非一星文件,但是当更改**
为***
并返回时**
,没有给出预期的结果(**
不可预测)
其他答案
~="("
空气质量标准crumb=System.Generic.String:~="("
这不起作用,如果搜索量太大,Windows 似乎找不到任何东西。确实有效。本质上是找到一个只包含某个地方的
filename:~="("
文件名(
"*(*"
AQScrumb=filename:~~"*(*" OR System.Generic.String:"*(*"
成功了。文件名包含*(*
和 通配符,或任何以通配符开头且带有 的属性词(
。注意,~=
和都~~
表示包含。
答案4
使用此表达式搜索文件名,
filename: "*(1)*"