PowerShell - Symbole aus Dateinamen löschen bei besonderen Fällen

  • Ersteller Ersteller Knopper67
  • Erstellt am Erstellt am
K

Knopper67

Gast
Guten Abend,
ich versuche gerade mittels PowerShell Dateien umzubennen. Grundsätzlich habe ich hierfür schon eine Lösung:
Code:
Dir | Rename-Item –NewName { $_.name -replace ".jpg",".jpeg" }
Der Code sorgt beispielsweise dafür, dass alle .jpg in .jpeg umbenannt werden.

Nehmen wir als Beispielname "[2015] Argentinien.jpg"
Mit dem Skript kann ich die Dateiendung ändern. Was ich nun noch zusätzlich möchte, ist, dass der Eintrag "[2015]" verschwindet. 2015 ist hier willkürlich gewählt. Um genauer zu sein, habe ich viele Dateien, die irgendwas in "[ ]" enthalten und ich möchte, dass aus allen Dateien Namen "[irgendeinerInhalt]" gelöscht wird. Ich habe in PowerShell schon bisschen rumprobiert mit * als Platzhalter für beliebigen Inhalt, aber das klappt leider nicht. Google habe ich nun schon 3 Stunden bemüht, aber leider keinen passenden Eintrag für mein Anliegen gefunden. Weiß hier jmd., welche Eintrag ich machen muss, damit dieser als Platzhalter für xbeliebige Einträge gilt?

EDIT//
Code:
Dir | Rename-Item –NewName { $_.name -replace "\[*","000000" }
* arbeitet schon mal als Operator. Das ersetzt mir gerade alles, was hinter [ steht mit 000000.


Der einzige Weg, welcher mir gerade einfällt, wäre ein Skript zu schreiben, welches ermittelt, an welchen Stellen [ und ] jeweils stehen, dort den String zu teilen und anschließend die äußeren Stringteile wieder zusammenzuführen. Ist jetzt erstmal eine Idee, aber vllt. gibt es ja noch was schöneres.
 
Zuletzt bearbeitet:
-replace verwendet reguläre Ausdrücke.
Code:
$_.name -replace "\[[0-9]{4}\]",""
Schmeißt dir vier Zahlen zwischen eckigen Klammern raus.
Code:
$_.name -replace "\[(.*?\]",""
Schmeißt dir alles zwischen zwei nahen eckigen Klammern raus.
 
Das ersetzt dir alle eckigen Klammern mit Inhalt
Code:
Dir | %{ $_.name -replace '\[.*\]' , ''  }
 
Zurück
Oben