Windows 7搜索文件名中带有特殊字符的文件吗?


23

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

但是,当我键入(*(*"("*"("*我什么也没得到,也没有得到每个文件。

Microsoft在桌面搜索中使用的“高级查询语法”参考没有提及此内容。

是什么赋予了?


1
请参阅我有关搜索?的相关文章。文本文件内容中的字符字符。我看到类似的问题。superuser.com/questions/168638/...
jpierson

简单的解决方案是使用Everything
Michael S.

Answers:


24

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

~=是转义字符,然后你可以把一个特殊字符像(&?在双引号等。


1
但是,我如何搜索包含〜字符的文件(例如,单词锁定文件'〜$ xyz.doc'?
庆典大师

2
像这样:~="~$"
Frederic Leitenberger

1
我必须省略引号,才能使用句点。
sirdank '16

5

得到它了!

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

"*(*"

这适用于Windows 7?对我来说,它返回的所有文件(使用相同"*$*"的,因为我其实是在寻找文件名中美元符号。) 什么的工作对我来说~="("(带引号的括号中)和~=$(对于美元符号不含引号)。
ashleedawg

3

让我们来帮助!

对于任何Windows搜索问题,我的建议是两件事:

  1. 阅读AQS(高级查询语法)文档,以了解所有特殊字符的作用。
  2. 知道Windows搜索会将您的查询转换为精确的AQS,除非您对查询特定,否则Windows会猜测您实际上是什么意思。结果可能令人惊讶!

首先,有关AQS的一些基础知识

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

其次,如果您要在任何索引位置搜索,那么将不会显示查询中所有未索引位置。

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

第四,除非它们在查询中,否则它们是无证的,*并且?在AQS中表现异常~ COP_DOSWILDCARDS(这意味着非单词以,通配符开头*或被?解释)。Windows搜索通常会将搜索转换为~查询。例如,似乎通配符**?带有字母数字字符的字符串属性搜索带有~,而**没有字母数字字符的字符串则不搜索任何内容。*~查询中的单查询也被视为通配符COP_WORD_STARTSWITH $<

让我们分析一下您的查询

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

    好吧,unquoted (是当您使用AND或时没有进行分组的分组运算符OR,因此Windows认为您的意思是没有分组搜索所有内容。

  2. *(* 质量管理体系 crumb=

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

  3. "(" 质量管理体系 crumb=System.Generic.String:"("

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

  4. *"("*AQS,crumb=Rating:(>=1 <13) OR System.Generic.String:** System.Generic.String:"("* 这很疯狂,但是Windows Search尝试将前缀*后跟某些特殊字符的值转换为星级。1-13是1星。还要注意我的测试**在搜索任何内容之前或之后都没有字母数字字符,而不是通配符,并且这是不可预测的。

    此完整查询意味着

    (1星评级或以零开头的单词)和属性just (*不会与其他任何字符匹配,因为整个属性必须为(

    简化意味着1星文件称为 (

    **在查询中实际上(为我显示了一个非星形文件,但是将其更改为**to ***和back 时却**没有得到预期的结果(**不可预测)

其他答案

  1. ~="(" 质量管理体系 crumb=System.Generic.String:~="("

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

  2. "*(*"AQS crumb=filename:~~"*(*" OR System.Generic.String:"*(*" 这行得通。文件名包含*(*通配符或以通配符开头并带有的任何属性字(。注意,~=~~均包含。


0

这可以完美地找到“编号” /重复的文件

   name:~"*(1)*"

或者,要查找编号/重复的文件夹,请使用:

   kind:folder name:~"*(1)*"


~="(" 如另一个答案中所建议的在Windows 10中对我不起作用

就我而言,我需要查找文件副本 /“编号文件”,即查找在文件名末尾附加“(1)”的文件,例如,何时/通过以下方式创建的文件:

  1. 您将/资源管理器复制文件拖到一个文件夹中,该文件夹中已经存在具有相同文件名的文件。
  2. 云同步存储软件(例如OneDrive,GoogleDrive或DropBox)遇到同步问题或冲突,并创建了文件的2个副本,其中一个带有附加编号“重复文件”,“重复文件(1)”,“重复文件(2 )”,等等。

这不能回答问题(至少不能直接回答)。
马塔·朱哈斯(MátéJuhász)

@MátéJuhász您真的否决了我吗?真?使用没有数字“ 1”的建议对您不起作用吗?谢谢
Flak DiNenno

这实际上为我工作。使用filename:~"*TEXT*"TEXT是带有特殊字符的确切输入。最佳答案不起作用,无论有没有引号,有或没有星号,我都无法使它起作用。
Liggliluff

关心+1吗?😉
高射炮DiNenno

0

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

filename: "*(1)*"


-1

〜“ *(?)。*”对于不超过(9)的重复项,只需添加另一个?2位数字。但是要小心使用*而不是?。它大大扩大了搜索范围,结果可能不再是可取的。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.