在批处理脚本中执行 powershell 命令时转义字符

在批处理脚本中执行 powershell 命令时转义字符

我想执行 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)可能会有所帮助。

相关内容