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

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

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

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

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

1 ответ1

0

Читайте о регулярных выражениях, как предложено @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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .