25

I'm trying to find files in Windows 7 that have a parenthesis in the file name.

However, when I type ( or *(* or "(" or *"("* I get either nothing or every file.

Microsoft's "advanced query syntax" reference for desktop search mentions nothing about this.

What gives?

27

Use following syntax: ~="(".

~= is an escape character and then you can put a special character like (, &, ? etc. in double quotes.

|improve this answer|||||
  • 1
    But how can I search for files containing the ~ character (e.g. word lock files '~$xyz.doc' ? – Master of Celebration Jul 25 '14 at 16:17
  • 3
    Like this: ~="~$" – Frederic Leitenberger Apr 12 '16 at 8:16
  • 1
    I had to omit the quotation marks for this to work with a period. – sirdank May 19 '16 at 12:15
5

Got it!

Just had to type this into the search box:

"*(*"
|improve this answer|||||
  • This worked for you with Windows 7? For me it returns all files (same with "*$*", since I was actually looking for dollar signs in filenames.) What did work for me was ~="(" (with quotes for parentheses) and ~=$ (no quotes for dollar sign). – ashleedawg Jul 26 '18 at 6:54
4

Let's Help!

For any Windows Search issues my recommendation is two things:

  1. Read the AQS (Advanced Query Syntax) documentation, so you know what all the special characters do.
  2. Know that Windows Search will convert your query into precise AQS and unless you are specific in your queries, Windows will guess what AQS you actually meant. The results can be surprising!

First, some of basics on AQS

By default, string file properties (Filename, author, etc.) search with COP_WORD_STARTSWITH $<, so any word (separated by spaces , - _ () [] and more) that starts with your search term. Other non-string properties (Dates, etc.) search with COP_EQUAL =, or exact matches by default (No wild cards, * and ? are literal).

Second, if you are searching in any indexed location, then all non-indexed locations in your query will not be shown.

Third, Click on the Address Bar to see what AQS Windows Search actually searched with. You can ignore location crumbs and display-name: It will be percent encoded, so decode on a site like https://www.url-encode-decode.com/

Fourth, undocumented, * and ? behave unpredicatbly in AQS unless they are in a ~ COP_DOSWILDCARDS query (meaning the non-word starts with, and wild cards * or ? are interpreted). Windows search will usually convert searches to a ~ query. For example, it seems wild cards ** and ? with alphanumeric characters search string properties with ~, but ** without alphanumerics searches nothing. Also single * in non ~ queries are treated as a wildcard with COP_WORD_STARTSWITH $<.

Let's Analyze your queries

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

    Well, unquoted (is a grouping operator for when you use AND or OR, you grouped nothing, so Windows thinks you meant group nothing search everything.

  2. *(* AQS crumb=

    Most windows searches that starts with * windows tries to convert to a crumb=~~query_term (a contains search). * is treated as normal in a contains query. Anyways, in this case you wild card a group of nothing, so Windows searches for all groups of nothing (or everything!)

  3. "(" AQS crumb=System.Generic.String:"("

    Quotes search for exact phrases (the entire word or property should match) and are literal characters except for *, ? and "" become ". This searches for words that start with (, but since words are not ( it only searches for properties that are just (

  4. *"("* AQS crumb=Rating:(>=1 <13) OR System.Generic.String:** System.Generic.String:"("* This one is crazy, but Windows Search tries to convert prefixed * followed by certain special characters as star ratings. 1-13 is 1 star. Also note from my testing, ** without any alphanumeric characters before or after it searches for nothing instead of a wild card and is unpredictable.

    This full query means

    (1 star rating OR Word that starts with nothing) AND properties that are just (. * won't match any other characters because the whole property has to be (.

    Simplified it means, 1 star files called (

    ** in the query actually showed a non-one star ( file for me, but when changing the ** to *** and back to ** it gave the expected no results (** is unpredictable)

The other answers

  1. ~="(" AQS crumb=System.Generic.String:~="("

    This didn't work, windows seems to not find anything if the amount of searching is too intensive. filename:~="(" does work. Essentially find a filename that contains just a ( somewhere

  2. "*(*" AQS crumb=filename:~~"*(*" OR System.Generic.String:"*(*" This worked. Filename contains *(* with wild cards OR any property word that starts with wild cards and has a (. Note, both ~= and ~~ mean contains.

|improve this answer|||||
0

This WORKED PERFECTLY to find 'numbered'/duplicate FILES:

   name:~"*(1)*"

alternately, to find numbered / duplicate FOLDERS use:

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


~="(" as suggested in another answer didn't work for me in Windows 10

In my case, I needed to find FILE COPIES / "numbered files", i.e. find files with "(1)" appended to the end of the filename, e.g. files that are created when/by:

  1. you drag / explorer copy files into a folder, where files with the same filenames already exist.
  2. cloud syncing storage software, such as OneDrive, GoogleDrive, or DropBox encounters syncing issues or conflicts and creates 2 copies of a file, naming one with an appended number "duplicate file", "duplicate file (1)", "duplicate file (2)", etc...
|improve this answer|||||
  • This doesn't answer the question (at least not directly). – Máté Juhász Sep 21 '17 at 6:26
  • @MátéJuhász did u downvote me really? really? does using my suggestion without the number "1" not work for you? thanks – Flak DiNenno Sep 21 '17 at 21:20
  • This actually worked for me. Using filename:~"*TEXT*"where TEXT is the exact input with special characters. The top answer did not work, I could not make it work with or without quotes, with or without asterisks. – Liggliluff May 24 '18 at 11:11
  • Care to +1 it? 😉 – Flak DiNenno May 24 '18 at 11:59
0

Use this expression to search with filenames,

filename: "*(1)*"
|improve this answer|||||
-1

Use this in the search box:

~"*(2)*"
|improve this answer|||||
  • 4
    Can you explain? – bertieb Mar 13 '17 at 7:54
-1

~"* (?).*" for duplicates not exceeding (9), just add another ? for 2 digits. But be careful using * instead of ?. It broadens the search considerably and the results may no longer be desireable.

|improve this answer|||||

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.