簡體   English   中英

如何在Powershell中將帶引號的參數輸入perl?

[英]How do I feed a quoted argument to perl in Powershell?

我想從引用了參數的powershell調用perl腳本:

myProg -root="my path with spaces"

我嘗試使用-root='"my path with spaces"'-root='my path with spaces'-root=\\"my path with spaces\\" ,但是似乎沒有任何作用。 <ENTER> ,我看到>>作為提示。

如何在Powershell的命令行中傳遞此引用的參數?

嘗試將整個參數放在引號中並轉義內部引號,這樣powershell將不會嘗試解析它:

myProg '-root=\"my path with spaces\"'

明確表示每個命令行參數可能很有用。 不必依賴解析器通過空格來弄清楚參數是什么,而是顯式創建一個字符串數組,每個命令行參數一個項。

$cmdArgs = @( `
    '-root="my path with spaces"', `
    'etc', `
    'etc')

& "C:\etc\myprog.exe" $cmdArgs

嘗試使用Powershell將帶有空格的參數傳遞給可執行文件時,我遇到了類似的問題。 最后,我發現使用Invoke-Expression時,可以通過對參數的雙引號進行三重轉義來獲得帶引號的參數:

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

不清楚的是為什么我可以使用單個反引號字符來轉義可執行文件,而必須使用3個反引號來完成引號參數。 我所知道的是,這是唯一對我有用的解決方案。

我解決了類似的問題

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

希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM