如何将Argument传递给带空格的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)然后它将路径1和path2中断并中止。
请告诉我这样做的正确方法。
谢谢, Ashish
答案 0 :(得分:2)
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}""
答案 1 :(得分:1)
您需要将路径封装在引号中。否则,它会将空格作为分隔符读取,并认为路径的其余部分是参数。
答案 2 :(得分:0)
你可以将包含空格的参数放在双引号中,如下所示:
string args = String.Format(@"{0} ""{1}"" {2} ""{3}""", "-plot", path1, "-o", path2);
答案 3 :(得分:0)
将路径放在引号中......例如“\”“+ path1 +”\“”
答案 4 :(得分:0)
尝试以下方法:
string args = String.Format("{0}\"{1}\"{2}\"{3}\"", "-plot " ,path1, " -o ", path2);
这将在您的路径周围加上引号,以便它们作为单个字符串传递,并忽略它们中的空格。