Переименуйте-Item используя -Replace с несколькими шаблонами

Рассмотрим файлы:

File1 (Custom).jpg
File2 (Custom).jpg

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

Сделать это достаточно легко, используя Rename-Item -NewName {$_.name -replace " \(Custom\)", ""}, но я хотел бы сделать оба (и, возможно, дополнительные строковые шаблоны)

Мне трудно задать Google правильный вопрос, казалось бы..

1 ответ

Решение

Читайте о регулярных выражениях, как предложено @Seth. Большую часть времени вы будете использовать регулярные выражения с -match в PowerShell, но другие cmdLets, как -replace а также select-string и используйте их.

Похоже, вы уже узнали, что вам нужно экранировать специальные символы, такие как скобки, с обратной косой чертой. Вы можете сопоставить пробелы с \s и укажите количество 0 или более совпадений с *, Далее вы можете использовать оператор ИЛИ, который является символом трубы | соответствовать одному из нескольких вариантов (x|y|z) (x или y или z).

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

"file 2(barney).jpg" -replace "\s*(\(fred\)|\(barney\)|\(wilma\))", ""
file 2.jpg
Другие вопросы по тегам