如何将参数传递给带空格的System.Dignostics.Process。我正在这样做:

System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.EnableRaisingEvents = false;
proc.StartInfo.FileName = exePath + @"\bin\test.exe";

string args = String.Format(@"{0}{1}{2}{3}", "-plot " ,path1, " -o ", path2);
proc.StartInfo.Arguments = args;


当path1和path2不包含空格时(假设path1 = C:\ Temp \,而path2 = C:\ Temp \ Test),则可以正常工作,但是当path1和path2包含空格时
path1 = C:\ Documents and Settings \ user \ Desktop和path2 = C:\ Documents and Settings \ user \ Desktop \ New Folder),然后将path1和path2取消并中止。

请让我知道执行此操作的正确方法。

谢谢,
阿什什

最佳答案

Process proc = new Process();
proc.EnableRaisingEvents = false;
proc.StartInfo.FileName = Path.Combine(exePath, @"bin\test.exe");
proc.StartInfo.Arguments = String.Format(@"-plot ""{0}"" -o ""{1}""", path1, path2);


如果使用文字(不带@),则可以转引号:

\"{0}\"


如果使用逐字字符串(带有@),则可以将引号加倍:

""{0}""

关于c# - System.Diagnostics.Process参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1012409/

10-09 01:43