Renomear-Item usando -Replace com múltiplos padrões

0

Considere os arquivos:

Arquivo1 (personalizado) .jpg Arquivo 2 (Custom) .jpg

Eu preciso renomear os arquivos para remover "(Custom)" e / ou "(Custom)" da string Name (observe o espaço antes do parêntese de abertura).

Fazer um é fácil o suficiente usando Rename-Item -NewName {$_.name -replace " \(Custom\)", ""} , mas eu gostaria de fazer os dois (e possivelmente padrões de sequência adicionais)

Estou com dificuldade em perguntar ao Google a pergunta certa, parece ...

    
por Bjørn H. Sandvik 27.10.2017 / 09:51

1 resposta

0

Leia sobre expressões regulares como sugerido pelo @Seth. A maior parte do tempo você usará expressões regulares com -match no powershell, mas outros cmdLets como -replace e select-string também os usarão.

Você já parece ter aprendido que precisa escapar de caracteres especiais como parênteses com uma barra invertida. Você pode corresponder caracteres de espaço com \s e especificar uma quantidade de 0 ou mais correspondências com * . Em seguida, você pode usar o operador OR, que é o caractere de pipe | , para corresponder a uma das várias opções (x | y | z) (x ou y ou 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
    
por 27.10.2017 / 23:32