PowerShell e arquivos em lote com entrada do usuário

0

OK primeiro graças a nex84 por responder a minha última pergunta e todos aqueles que deram entrada também neste link https://superuser.com/a/1051727/569550 ...

Agora tenho uma nova pergunta, mas ela se vincula ao mesmo código do link.

Eu criei um script que irá remover o texto de um nome de arquivo e substituí-lo por um novo texto ou um espaço em branco.

Isto foi afirmado na última questão após o link que eu dei. Eu adicionei uma entrada do usuário para que o usuário possa inserir o que o texto deve ser removido e o que ele deseja adicionar.

Eu recebo a parte de remoção correta, mas estou tendo problemas com a adição de novo texto ao nome do arquivo. Alguma sugestão...

O código abaixo funciona para o removido, mas quando a renomeação vem no script adiciona "$ Rename" ao nome do arquivo em vez do que o usuário insere.

Exemplo: Se o usuário removeu "-Layout1" mas adiciona "-Model" ao nome do arquivo, obtemos:

BLABLA-Layout1.pdf ==>  BLABLA$Replace.pdf

Código:

CD C:\TempPDF 
$Filter = Read-Host -Prompt 'Input Text To Be Removed' 
$Rename = Read-Host -Prompt 'Input Text To Be Added' 
Write-Host "You input server '$Filter' and '$Rename'" 
Get-ChildItem -Filter "*$Filter*" -Recurse | Rename-Item -NewName {$_.name -replace "$Filter",'$Rename' }
Christopher
fonte

Respostas:

1

Aspas simples no Powershell delimitam apenas valores de string. Nesse caso, use aspas duplas ao passar a variável $ Rename para o nome do arquivo.

Get-ChildItem -Filter "*$Filter*" -Recurse | Rename-Item -NewName {$_.name -replace "$Filter","$Rename" }
bbatman
fonte
Perfeito. Obrigado pela resposta rápida. Isso funciona perfeitamente agora. Tudo o que preciso fazer agora é embrulhá-lo em um exe e distribuí-lo aos meus colegas de trabalho. Caras, vocês são incríveis! Obrigado novamente.
Christopher
Esse código me permite evitar o download de todos os utilitários de renomeação. Obrigado novamente.
Christopher