O problema que você está enfrentando é que -replace
do PowerShell usa Expressões regulares para pesquisa.
Isso significa que os colchetes ( ()
) da sua consulta de pesquisa estão sendo interpretados como um grupo de captura .
Nesse caso, você deseja referenciá-los como caracteres literais, portanto, é necessário escapar dos colchetes. No RegEx, isso é feito com uma barra invertida ( \
).
Então, -replace '\(1.0\)',''
deve fazer isso.
Como você está usando o RegEx, é possível aproveitá-lo e executá-lo de uma só vez especificando um caractere "número" classe ou "conjunto" de caracteres em vez de números de versão reais, como seu padrão de pesquisa
Então, algo como:
gi * | % { rni $_ ($_.Name -replace '\(1.[0-9]\)', '') }
Removerá (1.<any number from 0 to 9>)
dos nomes dos arquivos.
Se você quiser remover os colchetes e qualquer coisa entre eles, você pode usar o "qualquer caractere ( .
) qualquer quantidade de vezes ( *
)" Padrão RegEx:
ou seja: -replace '\(.*\)',''
Nota: O RegEx pode surpreendê-lo (pense em colchetes externos e internos em um único nome de arquivo, neste cenário), portanto faça backups de seus arquivos e execute os testes primeiro. :)