Versuch, Dateinamen mit Sonderzeichen im Windows-Explorer zu durchsuchen (Windows 10)

2538
Sia

Durch einen sehr ärgerlichen Fehler wurden tausende meiner Dateien oftmals kopiert. Dies hat zu Tausenden von Dateien mit dem Namen Dateiname (2), Dateiname (3) usw. geführt.

Meine kluge Idee war, eine Suche nach (2) durchzuführen und alle Ergebnisse zu löschen, aber die Suche zeigt immer alle Dateien mit der Nummer 2 im Dateinamen an, anstatt die Klammern einzuschließen.

Ich habe Namen ausprobiert: ~ = (2), "(2)" und sogar "(2)" "(2)" nachdem ich an anderer Stelle nach Lösungen gesucht habe. Keiner von ihnen hat gearbeitet. Ich möchte Dateien ausschließen, die nur eine 2 im Dateinamen haben. Ich möchte NUR die Dateien, die die beiden in den Klammern haben.

Kann jemand bitte helfen?

2
Suchen Sie also nur eine Windows Explorer-Lösung oder genügt eine Skriptlösung? Pimp Juice IT vor 6 Jahren 0

2 Antworten auf die Frage

3
DavidPostill

Ich möchte nur die Dateien, in denen sich die beiden Klammern befinden (2)

Verwenden Sie den folgenden Suchausdruck:

name:~"*(2)*" 

Anmerkungen:

  • ~ ist der Literal-String-Indikator und der folgende Name muss mit dem gesamten Dateinamen übereinstimmen

  • Je nach Ihren Bedürfnissen filename:kann es besser sein alsname:

Vor:

enter image description here

Nach dem:

enter image description here


Lesen Sie weiter

@Sia Benötigen Sie weitere Hilfe? Wenn Ihre Frage damit beantwortet wurde, vergessen Sie nicht, die Antwort zu akzeptieren (https://superuser.com/help/accepted-answer). DavidPostill vor 6 Jahren 0
Nein, danke, das hat es behoben! Dies ist nur das erste Mal, dass ich diese Site benutzt habe und wusste nicht, ob ich die Antwort akzeptieren würde. Getickt! Sia vor 6 Jahren 0
@Sia Großartig, danke! DavidPostill vor 6 Jahren 0
0
LotPings

Ich empfehle ein PowerShell-Skript, das:

  • findet alle Dateien (1), die rekursiv für einen angegebenen Startordner hinter dem BaseName stehen.
  • Führt ein Verzeichnis ohne die Nummer aus, um alle möglichen Dupes zu finden, und erstellt dann einen Hash, der nur exakte Kopien löscht und zur Bestätigung auffordert.
  • Wenn Dateien zwischenzeitlich geändert werden, sind diese keine genaueren Kopien und fallen durch.

Ändern Sie den Push-LocationOrdner an Ihren Startordner, speichern Sie die Datei mit der Erweiterung .ps1und führen Sie sie aus.

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

Um nur eine Verzeichnisauflistung der Dateien zu erhalten, verwenden Sie dieses reduzierte Skript:

Push-Location "D:\" Get-ChildItem "* (1).*" -Recurse -File | ForEach-Object { $BaseFile = (Join-Path $_.Directory ($_.BaseName -replace ' ?\(\d+\)'))+"*$($_.Extension)" Get-ChildItem $BaseFile  } PopD 
Warum ein kompliziertes PowerShell-Skript verwenden, wenn Sie es mit der Explorer-Suchfunktion problemlos ausführen können? DavidPostill vor 6 Jahren 0
@DavidPostill wegen zusätzlicher Funktionalität? Dabei werden nur binäre gleichwertige Dateien gelöscht. LotPings vor 6 Jahren 0
OK. Aber darum wurde die Frage nicht gestellt :) DavidPostill vor 6 Jahren 0
Ich fürchte, ich weiß überhaupt nicht, wie man ein Skript benutzt, und Davids Lösung hat für mich funktioniert. Danke aber für die Hilfe! Sia vor 6 Jahren 0