Переименуйте-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