Question: I have created an image for my freshly installed Windows 10 last year,
I want to format my laptop now.

I am trying to copy this image (11GB) to an external harddisk so i can use it to resotre windows.

The problem is that when I try to copy the image folder I get "calculating" for an hour then nothing happens

Any idea how to resolve this?

Answer: 
### I only want the files that have the two inside the brackets `(2)`

Use the following search expression:

```
name:~"*(2)*"

```

Notes:

* `~` is the literal string indicator and what follows has to match the entire file name
* Depending on your needs `filename:` may be better than `name:`

Before:

[![enter image description here](https://i.stack.imgur.com/CcpFH.png)](https://i.stack.imgur.com/CcpFH.png)

After:

[![enter image description here](https://i.stack.imgur.com/d6iGB.png)](https://i.stack.imgur.com/d6iGB.png)

---

### Further Reading

* [Advanced Query Syntax](https://msdn.microsoft.com/en-us/library/windows/desktop/aa965711(v=vs.85).aspx)
* [Using Advanced Query Syntax Programmatically](https://msdn.microsoft.com/en-us/library/windows/desktop/bb266512(v=vs.85).aspx#query_strings)
I suggest a PowerShell script which:

* finds all files with a trailing `(1)` to the BaseName recursivly for a given
starting folder.
* Does a dir without the number to find all possible dupes and then creates a hash to only delete exact copies, asking for confirmation.
* If files are changed in the meantime these are no more exact copies and fall through.

Change the `Push-Location` to fit your starting folder, save file with the extension `.ps1` and execute it.

```
## Q:\Test\2017\07\15\SU_1230033.ps1
## inspired by http://n3wjack.net/2015/04/06/find-and-delete-duplicate-files-with-just-powershell/

Push-Location "D:\"
Get-ChildItem "* (1).*" -Recurse -File | ForEach-Object {
    $BaseFile = (Join-Path $_.Directory ($_.BaseName -replace ' ?\(\d+\)'))+"*$($_.Extension)"
    Get-ChildItem $BaseFile | Get-FileHash | Group-Object Hash |  Where { $_.Count -gt 1 } | 
        ForEach-Object {$_.Group | Select-Object -Skip 1 } | Remove-Item -Confirm
}
PopD

```

To get just a dir listing of the files use this reduced script:

```
Push-Location "D:\"
Get-ChildItem "* (1).*" -Recurse -File | ForEach-Object {
    $BaseFile = (Join-Path $_.Directory ($_.BaseName -replace ' ?\(\d+\)'))+"*$($_.Extension)"
    Get-ChildItem $BaseFile 
}
PopD

```