我可以使用下面的順利傳遞參數到一個控制檯應用程序:將參數傳遞給控制檯應用程序
ProcessStartInfo psi = new ProcessStartInfo();
psi.FileName = Properties.Settings.Default.EmailBlasterAppPath;
string subject = txtSubject.Text.Replace(@"""", @"""""");
string emailbody = txtEmail.Text.Replace(@"""", @"""""");
string args = String.Format("{0},{1},{2},{3},{4}",
"SendPlainEmail",
B2BSession.Doctor.DoctorId.ToString(),
DocEmail.Trim(), subject, emailbody);
psi.Arguments = args;
psi.UseShellExecute = false;
psi.CreateNoWindow = true;
Process process = Process.Start(psi);
然而,一旦控制檯應用程序中,控制檯應用程序只能期望參數分隔單串一個空格(見下圖):
static void Main(string[] args)
我的問題是,我傳遞主題行和郵件正文進入控制檯應用程序,但它僅在參數拿起第一個字。所以,如果我傳入類似的東西(注意「測試主題行」應該是一個參數,「測試主體行」將是另一個參數),總共5個參數:
SendPlainEmail 25498 [email protected]測試對象線路測試體線
但是,控制檯應用程序將解析它爲具有9個參數(每個字):
SendPlainEmail 25498 [email protected]測試受試者線路測試體線
有沒有辦法將參數傳遞給控制檯應用程序,只有5個參數,主題和主體被視爲一個參數爭論?
因此,正如您可以看到的,就在Process.Start語句之前,psi.arguments屬性中包含的內容。
正在正確傳遞數據,只是接收控制檯應用程序只能接收由空格分隔的字符串數組。所以,代替第四和第五參數是「測試受試者行」及「測試體線」,控制檯應用程序過程中它如下所示:
ARGS [3] =測試
ARGS [4] =受試者
ARGS [5] =線
ARGS [6] =測試
ARGS [7] =身體
ARGS [8] =線
那麼,代替這個,我怎樣才能將「測試主題行」和「測試主體行」分別作爲數組中的一項呢?
參數必須用空格或製表符分隔。用空格替換格式字符串中的逗號。 – 2012-04-28 16:55:33