首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将Process.Start与路径中的参数和空格一起使用

将Process.Start与路径中的参数和空格一起使用
EN

Stack Overflow用户
提问于 2013-06-26 21:24:06
回答 4查看 68.9K关注 0票数 39

我见过类似的例子,但找不到与我的问题完全相同的东西。

我需要在C#中运行类似这样的命令:

代码语言:javascript
复制
C:\FOLDER\folder with spaces\OTHER_FOLDER\executable.exe p1=hardCodedv1 p2=v2

我在运行时设置了v2,因此我需要能够在调用Process.Start之前修改C#中的字符串。有没有人知道如何处理这个问题,因为我的参数之间有空格?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-06-26 21:32:59

您可以使用ProcessStartInfo类来分隔参数、FileName、WorkingDirectory和参数,而不用担心空格

代码语言:javascript
复制
string fullPath = @"C:\FOLDER\folder with spaces\OTHER_FOLDER\executable.exe"
ProcessStartInfo psi = new ProcessStartInfo();
psi.FileName = Path.GetFileName(fullPath);
psi.WorkingDirectory = Path.GetDirectoryName(fullPath);
psi.Arguments = "p1=hardCodedv1 p2=" + MakeParameter();
Process.Start(psi);

其中,MakeParameter是返回要用于p2参数的字符串的函数

票数 22
EN

Stack Overflow用户

发布于 2015-01-13 04:30:16

即使您使用ProcessStartInfo类,如果您必须为参数添加空格,那么上面的答案也不能解决问题。有一个简单的解决方案。只需在参数两边添加引号。就这样。

代码语言:javascript
复制
 string fileName = @"D:\Company Accounts\Auditing Sep-2014 Reports.xlsx";
 System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
 startInfo.FileName = "Excel.exe";
 startInfo.Arguments = "\"" + fileName + "\"";
 System.Diagnostics.Process.Start(startInfo);

在这里,我在filename前后添加了转义引号,它可以正常工作。

票数 40
EN

Stack Overflow用户

发布于 2013-06-26 21:30:06

尝尝这个

代码语言:javascript
复制
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.CreateNoWindow = false;
startInfo.UseShellExecute = false;
startInfo.FileName =  "\"C:\\FOLDER\\folder with   spaces\\OTHER_FOLDER\\executable.exe\"";
startInfo.Arguments = "p1=hardCodedv1 p2=v2";
Process.Start(startInfo);
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17321289

复制
相关文章

相似问题

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