Escape caracteres ao executar o comando powershell no script em lote

0

Eu quero executar o comando powershell e colocá-lo em uma variável em lote

O comando:

for /f "delims=" %%i in ('powershell ^(Get-ChildItem ""\dir\"" -Name | sort-object {\[regex\]::Replace^($_,^'\d+^',{$args\[0\].Value.PadLeft^(20^)}^)} | select -last 1^) ') do set output=%%i

Não pode ser executado devido a um caracter especial. Além disso, não consigo pausar a janela para que ela feche antes que eu possa ver qual é o problema.

Eu acho que o problema é com o pipe "|", porque o seguinte comando funciona

for /f "delims=" %%i in ('powershell ^(Get-ChildItem ""\dir\"" -Name^) ') do set output=%%i

Eu tentei adicionar ^ e "" antes do pipe, não funciona. Você pode identificar o problema?

    
por igor 07.11.2017 / 16:17

1 resposta

0

Você pode usar um backtick como o caractere de escape. Eu suponho que você está tentando consertar a parte ""\dir\"" do comando? Um exemplo simples de escape abaixo:

PS A:\> Write-Host "'"Use the '' as an escape character to place a '" inside other '"s.'""

Retorna:

"Use the ' as an escape character to place a " inside other "s."

Não consigo ver o canal causando o problema ... Redirecionar sua saída ( 1>&2 ) pode ser útil.

    
por 07.11.2017 / 18:52