首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >System.Diagnostics.Process参数

System.Diagnostics.Process参数
EN

Stack Overflow用户
提问于 2009-06-18 12:36:40
回答 5查看 5.5K关注 0票数 2

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

代码语言:javascript
复制
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并中止。

请告诉我做这件事的正确方法。

谢谢,阿什什

EN

回答 5

Stack Overflow用户

发布于 2009-06-18 12:41:38

代码语言:javascript
复制
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);

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

代码语言:javascript
复制
\"{0}\"

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

代码语言:javascript
复制
""{0}""
票数 2
EN

Stack Overflow用户

发布于 2009-06-18 12:39:14

您需要用引号将路径封装起来。否则,它读取空格作为分隔符,并认为路径的其余部分是一个参数。

票数 1
EN

Stack Overflow用户

发布于 2009-06-18 12:40:02

您可以将可能包含空格的参数放在双引号中,如下所示:

代码语言:javascript
复制
string args = String.Format(@"{0} ""{1}"" {2} ""{3}""", "-plot", path1, "-o", path2);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1012409

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档