PowerShell e arquivos em lote com entrada do usuário

0

OK primeiro um agradecimento a nex84 por responder minha última pergunta e todos aqueles que deram entrada também neste link link ...

Agora tenho uma nova pergunta, mas ela está vinculada ao mesmo código do link.

Eu criei um script que removerá o texto de um nome de arquivo e o substituirá por um novo texto ou um espaço em branco.

Isso foi afirmado na última pergunta 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 obtenho a parte de remoção correta, mas estou tendo problemas com a adição de novo texto ao nome do arquivo. Qualquer 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' }
    
por Christopher 15.03.2016 / 17:50

1 resposta

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" }
    
por 15.03.2016 / 18:09