我想执行 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
我尝试在管道前添加^
and ""
,但是没有用。你能发现问题所在吗?
答案1
您可以使用反引号作为转义字符。我假设您正在尝试修复""\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
)可能会有所帮助。