我期待用一組給定的參數產生一個命令,並且這些參數可以是任意字符串 - 特別是,一個參數可以包含空格,冒號等。我喜歡這樣做,而不必逃避參數字符串,主要是因爲我發現它幾乎不可避免地導致在某個點上過度,不足或錯誤逃脫。如何使用任意參數字符串乾淨地產生一個進程
據我所知,沒有辦法使用System.Diagnostics.Process
API來做到這一點 - ProcessStartInfo.Arguments
總是將字符串分割成空白字符,並對其他字符有特殊的解釋。我目前正在做的是產生xargs --null
(我正在Linux上開發)使用命令運行並通過stdin爲其提供參數。這是有效的,但不會爲最美麗的解決方案贏得任何獎項。
有沒有更好的.NET API來做我想做的事?
編輯:例如,考慮想要通過參數「I am a filename with crazy characters "'%1!#\^*☺」 fear my splitting
。這是可能的 - 據我所知所有需要發生的是扔"
圍繞它,然後逃脫嵌入"
與\
。只是不必逃避它會更清晰,更簡單,並且不太可能出錯。
如果最終出錯*任何*,您的代碼至少有一個錯誤。找到並修復它。 – Jon 2011-04-25 11:28:35
這就是我想要做的。通過移除* need *來轉義來修復錯誤轉義。我的經驗是,逃避很難一直得到絕對正確的,所以我想 - *和可以* - 避免它! – RAOF 2011-04-26 00:43:57