Попытка поиска имен файлов со специальными символами в проводнике Windows (Windows 10)

2236
Sia

Из-за ошибки очень раздражающего человека тысячи моих файлов были скопированы, часто несколько раз. Это привело к появлению тысяч файлов с именами filename (2), filename (3) и т. Д.

Моя яркая идея состояла в том, чтобы выполнить поиск (2) и удалить все результаты, но поиск продолжает отображать все файлы, которые имеют номер 2 в имени файла, вместо включения скобок.

Я пробовал name: ~ = (2), "(2)" и даже "(2)" "(2)" после поиска решений в другом месте. Никто из них не работал. Я хочу исключить файлы, которые имеют только 2 в имени файла, я ТОЛЬКО хочу файлы, которые имеют два в скобках.

Может кто-нибудь помочь, пожалуйста?

2
Итак, вы ищете только решение для Windows Explorer или будет достаточно и сценариев? Pimp Juice IT 7 лет назад 0

2 ответа на вопрос

3
DavidPostill

Я хочу только файлы, которые имеют два в скобках (2)

Используйте следующее поисковое выражение:

name:~"*(2)*" 

Заметки:

  • ~ является индикатором литеральной строки, и то, что следует, должно соответствовать всему имени файла

  • В зависимости от ваших потребностей filename:может быть лучше, чемname:

До:

После:


Дальнейшее чтение

@ Тебе нужна дополнительная помощь? Если это ответило на ваш вопрос, не забудьте [принять ответ] (https://superuser.com/help/accepted-answer). DavidPostill 7 лет назад 0
Нет, спасибо, это исправило! Я впервые пользуюсь этим сайтом, и я не знал о принятии ответа. Ticked! Sia 7 лет назад 0
@Sia Отлично, спасибо! DavidPostill 7 лет назад 0
0
LotPings

Я предлагаю сценарий PowerShell, который:

  • находит все файлы с трейлингом (1)к BaseName рекурсивно для заданной начальной папки.
  • Делает dir без номера, чтобы найти все возможные дубликаты, а затем создает хэш, чтобы удалять только точные копии, запрашивая подтверждение.
  • Если файлы тем временем изменяются, они не являются точными копиями и проваливаются.

Измените, Push-Locationчтобы соответствовать вашей начальной папке, сохраните файл с расширением .ps1и выполните его.

## 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 

Чтобы получить просто список файлов dir, используйте этот сокращенный скрипт:

Push-Location "D:\" Get-ChildItem "* (1).*" -Recurse -File | ForEach-Object { $BaseFile = (Join-Path $_.Directory ($_.BaseName -replace ' ?\(\d+\)'))+"*$($_.Extension)" Get-ChildItem $BaseFile  } PopD 
Зачем использовать сложный сценарий PowerShell, если вы можете легко сделать это с помощью функции поиска Explorer? DavidPostill 7 лет назад 0
@DavidPostill из-за дополнительной функциональности? Он делает удаление только двоичных одинаковых файлов. LotPings 7 лет назад 0
ХОРОШО. Но это не то, что задал вопрос :) DavidPostill 7 лет назад 0
Боюсь, я вообще не знаю, как использовать скрипт, и решение Дэвида сработало для меня. Но спасибо за помощь! Sia 7 лет назад 0