Umbenennen-Element mit -Replace mit mehreren Mustern

877
Bjørn H. Sandvik

Betrachten Sie die Dateien:

Datei1 (Benutzerdefiniert) .jpg
Datei2 (Benutzerdefiniert) .jpg

Ich muss die Dateien umbenennen, um "(Custom)" und / oder "(Custom)" von ihrer Namenszeichenfolge zu entfernen (beachten Sie das Leerzeichen vor der öffnenden Klammer).

Mit einem zu tun ist einfach genug Rename-Item -NewName {$_.name -replace " \(Custom\)", ""}, aber ich möchte beide (und möglicherweise zusätzliche String-Muster) ausführen.

Es fällt mir schwer, Google die richtige Frage zu stellen, wie es scheint.

0
Suchen Sie nach regulären Ausdrücken oder überlegen Sie, ob Sie ein einfacheres Schema verwenden möchten, z. B. die ersten N-Zeichen. Seth vor 6 Jahren 0

1 Antwort auf die Frage

0
Clayton

Lesen Sie über reguläre Ausdrücke, wie von @Seth vorgeschlagen. -matchMeistens verwenden Sie reguläre Ausdrücke mit in Powershell, aber andere cmdLets mögen -replaceund select-stringverwenden sie auch.

Sie scheinen bereits gelernt zu haben, dass Sie Sonderzeichen wie Klammern mit einem Backslash vermeiden müssen. Sie können Leerzeichen mit \sund eine Anzahl von 0 oder mehr Übereinstimmungen mit angeben *. Als Nächstes können Sie den ODER-Operator, den Pipe-Charater, verwenden |, um eine von mehreren Optionen (x | y | z) (x oder y oder z) abzugleichen .

"file 1 (fred).jpg" -replace "\s*(\(fred\)|\(barney\)|\(wilma\))", "" file 1.jpg  "file 2(barney).jpg" -replace "\s*(\(fred\)|\(barney\)|\(wilma\))", "" file 2.jpg