gpt4 book ai didi

powershell - 如何在命令行参数中正确地转义空格和反斜杠?

转载 作者:行者123 更新时间:2023-12-02 23:58:45 24 4
gpt4 key购买 nike

我在将字符串数组传递给PowerShell中的命令时遇到了一些问题,因此我正在调试脚本。我正在使用PowerShell Community Extension Project (PSCX)中的EchoArgs.exe程序。
如果执行此脚本:

Import-Module Pscx
cls

$thisOne = 'this_one\';
$secondOne = 'second one\';
$lastOne = 'last_one'

$args = $thisOne `
, "the $secondOne" `
, "the_$lastOne"


EchoArgs $args

我得到这个结果:
Arg 0 is <this_one\>
Arg 1 is <the second one" the_last_one>

Command line:
"C:\Program Files (x86)\PowerShell Community Extensions\Pscx3\Pscx\Apps\EchoArgs.exe" this_one\ "the second one\" the_last_one

看来,如果字符串包含空格,则最后一个反斜杠会转义双引号。实际上,如果我仅使用该反斜杠,似乎一切正常:
Import-Module Pscx
cls

$thisOne = 'this_one\';
$secondOne = 'second one\\';
$lastOne = 'last_one'

$args = $thisOne `
, "the $secondOne" `
, "the_$lastOne"


EchoArgs $args

结果如下:
Arg 0 is <this_one\>
Arg 1 is <the second one\>
Arg 2 is <the_last_one>

Command line:
"C:\Program Files (x86)\PowerShell Community Extensions\Pscx3\Pscx\Apps\EchoArgs.exe" this_one\ "the second one\\" the_last_one

在PowerShell(即cmdlet)中是否存在“智能”方式来转义任何字符串以避免此类问题?

最佳答案

尝试改用Start-Process。它有一个$Arguments参数,更适合此参数。

看到这里:PowerShell - Start-Process and Cmdline Switches

关于powershell - 如何在命令行参数中正确地转义空格和反斜杠?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35750665/

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