代码之家  ›  专栏  ›  技术社区  ›  Mike Caron

如何在Powershell中向perl提供带引号的参数?

  •  1
  • Mike Caron  · 技术社区  · 14 年前

    myProg -root="my path with spaces"
    

    我试着用 -root='"my path with spaces"' , -root='my path with spaces' , -root=\"my path with spaces\" ,但似乎没有任何效果。压后 <ENTER> ,我明白了 >> 作为提示。

    如何在Powershell的命令行上传递这个引用的参数?

    4 回复  |  直到 14 年前
        1
  •  2
  •   zdan    14 年前

    myProg '-root=\"my path with spaces\"'
    
        2
  •  1
  •   Peter Seale    14 年前

    显式表示每个命令行参数可能很有用。您可以显式地创建一个字符串数组,每个命令行参数对应一项,而不是依赖解析器通过空格来确定参数是什么。

    $cmdArgs = @( `
        '-root="my path with spaces"', `
        'etc', `
        'etc')
    
    & "C:\etc\myprog.exe" $cmdArgs
    
        3
  •  0
  •   Filburt kukabuka    14 年前

    Invoke-Expression '&.\myProg.exe `-u:IMP `-p: `-s:"my path with spaces"'
    

    希望这有帮助。

        4
  •  0
  •   0x574F4F54    12 年前

    在尝试使用powershell将带有空格的参数传递给可执行文件时,我遇到了类似的问题。最后,我发现我可以得到一个通过三重转义 使用调用表达式时参数的双引号:

    iex "&`"C:\Program Files\Vendor\program.exe`" -i -pkg=`"Super Upgrade```" -usr=User -pwd=password2"
    

    不明显的是,为什么我可以使用一个反勾号字符来转义可执行文件,而我必须使用3个反勾号来结束一个带引号的参数。我只知道这是唯一对我有效的解决方案。