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