gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 22:25:09 29 4
gpt4 key购买 nike

我想执行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

我尝试添加 ^ , ^^^""在管道之前,不起作用。你能发现问题吗?

最佳答案

Powershell 可以接受 Base64 编码的命令,这是克服 cmd 脚本中特殊字符的一种方便的方法。像这样,

$command = 'gci -param | stuff | ? { something }'
$bytes = [Text.Encoding]::Unicode.GetBytes($command)
$encoded = [Convert]::ToBase64String($bytes)
$encoded # Get output
ZwBjAGkAIAAtA...

现在你已经有了一个 base64 字符串,将它传递到批处理文件中
set encoded=ZwBjAGkAIAAtA...
for /f "delims=" %%i in ('powershell -encodedCommand %encoded' ...)

要反转 Base64 编码,请使用
[Text.Encoding]::Unicode.GetString([System.Convert]::FromBase64String($encoded))

关于powershell - 在批处理脚本中执行 powershell 命令时转义字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47172151/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com