我见过类似的例子,但找不到与我的问题完全相同的东西。
我需要在C#中运行类似这样的命令:
C:\FOLDER\folder with spaces\OTHER_FOLDER\executable.exe p1=hardCodedv1 p2=v2
我在运行时设置了v2,因此我需要能够在调用Process.Start之前修改C#中的字符串。有没有人知道如何处理这个问题,因为我的参数之间有空格?
发布于 2013-06-26 21:32:59
您可以使用ProcessStartInfo类来分隔参数、FileName、WorkingDirectory和参数,而不用担心空格
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参数的字符串的函数
发布于 2015-01-13 04:30:16
即使您使用ProcessStartInfo类,如果您必须为参数添加空格,那么上面的答案也不能解决问题。有一个简单的解决方案。只需在参数两边添加引号。就这样。
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前后添加了转义引号,它可以正常工作。
发布于 2013-06-26 21:30:06
尝尝这个
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);
https://stackoverflow.com/questions/17321289
复制相似问题