PowerShell e arquivos em lote

1

Eu escrevi uma linha do PowerShell diretamente no PowerShell e ela funciona perfeitamente, mas não consigo fazer com que o .bat a execute.

Acho que meu script do PowerShell está bloqueado pela empresa.

Se eu conseguir o mesmo resultado no CMD, ele resolverá o problema.

Aqui está o código do PowerShell:

CD C:\Temp

Get-ChildItem -Filter "*-Layout1*" -Recurse | Rename-Item -NewName {$_.name -replace ‘-Layout1’,'' }

Esse código pega o PLANVIEW-Layout1.pdf e o transforma em PLANVIEW.pdf, mas ele pega qualquer nome de arquivo com -Layout1 e remove o -Layout1.

Meus programas CAD criam .pdf enquanto adicionam "-Layout1" ou "-Model1" ao nome do arquivo.

Às vezes, eu crio centenas de PDFs e renomear todos eles um por um é uma dor.

O código do PowerShell acima é executado perfeitamente se eu digitá-lo na janela do PowerShell.

Eu quero que outros usuários também possam usar isso sem ter que digitar todo o código a cada vez.

EDITAR: Desculpe pelos comentários confusos ... Quando executo esse .bat:
@echo off PowerShell.exe -noexit -ExecutionPolicy Bypass -File "MyScript.ps1" Pause
  com MyScript.ps1:% CD C:\Temp Get-ChildItem -Filter "*-Layout1*" -Recurse | Rename-Item -NewName {$_.name -replace ‘-Layout1’,'' }

Agora recebo isso no CMD:

You must provide a value expression on the right-hand side of the '-replace' operator. At C:\Temp\MyScript.ps1:3 char:85 * Get-ChildItem -Filter "-Layout1" -Recurse | Rename-Item -NewName {$_.name -replace <<<< a?~-Layout1a?T,'' } + CategoryInfo :ParserError: (:) []. ParentContainsErrorRecordException + FullyQualifiedErrorId :ExpectedValueExpression

    
por Christopher 11.03.2016 / 14:29

1 resposta

0

Com relação à saída de erro e ao código ps1, parece que a "‘ citação em torno de "-Layout1" não é bem reconhecida.

Você pode tentar substituí-los por citações simples como essa:

Get-ChildItem -Filter "*-Layout1*" -Recurse | Rename-Item -NewName {$_.name -replace '-Layout1','' }
    
por 11.03.2016 / 19:28