[.NET] 呼叫外部程序 引數 複數+空白

作者: KawasumiMai (さあ、死ぬがいい)   2014-06-17 01:35:03
如題
使用System.Diagnostics.Process.Start()呼叫外部程序
要帶入引數時
需要Start(".exe","args")
如果要複數的時候
則使用空白分隔
如Start(".exe","arg1 arg2")
那如果本身引數也有空白呢?(如路徑)
試過拆開宣告
Dim hPsInfo As New System.Diagnostics.ProcessStartInfo()
hPsInfo.FileName = ".exe"
hPsInfo.Arguments = "A B C D E"
但是這樣寫他會視為5個引數
如果要弄成三個引數
"A"
"B"
"C D E"
要怎麼寫?
Google上一堆 "\" """ 之類的穿插有看沒有懂
作者: putumaxally (putumaxally)   2014-06-17 03:44:00
雙引號之間為字串,有空格的路徑要用雙引號括起來所以在字串裡面打雙引號會被認為是前一個雙引號的結尾要告訴編譯器我要打雙引號這個字元就必須使用跳脫字元反斜線加上某些字元稱為跳脫字元要在一個字串裡面打雙引號,如果寫成""",編譯器會認為前面兩個雙引號組成一個字串,所以要打雙引號字元要在前面加上反斜線,跟編譯器說我是要打雙引號這個字元,而不是字串的開頭或結尾Ex. "\"C:\Program Files\""第一個"代表字串的開頭,第一個\"代表雙引號字元第二個\"代表雙引號這個字元,最後面的"代表字串結尾
作者: KawasumiMai (さあ、死ぬがいい)   2014-06-17 10:53:00
感謝樓上回應,跳脫字元的概念在正規裡面有遇過所以可以理解,可是有點無法理解如果加上空白會變什麼樣子像是"\ "好像也不會把空白跳脫?如果原本是"A B C D E"要分三組是寫成"\"A\" \"B\" \"C D E\"" 嗎
作者: MOONRAKER (㊣牛鶴鰻毛人)   2014-06-17 12:50:00
非常幽默。

Links booklink

Contact Us: admin [ a t ] ucptt.com