Я хочу выполнить команду powershell и поместить ее в пакетную переменную

Команда:

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

Это не может быть выполнено из-за специального символа. Кроме того, я не могу приостановить окно, поэтому оно закрывается, прежде чем я вижу, в чем проблема.

Я думаю, что проблема с каналом "|", потому что следующая команда работает

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

Я пытался добавить ^ и "" перед pipe, не работает. Можете ли вы определить проблему?

1 ответ1

0

Вы можете использовать обратную черту в качестве escape-символа. Я полагаю, вы пытаетесь исправить ""\dir\"" часть команды? Простой экранирующий пример ниже:

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

Возвращает:

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

Я не вижу трубы, вызывающей проблему ... Перенаправление вашего вывода (1>&2) может быть полезным.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .