使用c#中的参数运行命令行,路径中包含空格

时间:2017-02-01 11:05:39

标签: c# .net command-line development-environment

我有以下c#代码:

string cmdInnoSetup = @"""C:\Program Files (x86)\Inno Setup 5\compil32\""" + " /cc " + @"""c:\\SetupScript.iss""";
System.Diagnostics.Process.Start("cmd.exe","/k "+ cmdInnoSetup);

但是当我执行它时,我得到以下消息:

  

"未找到程序"

但是当我从第二部分句子"c:\\SetupScript.iss"中删除双引号时,代码工作正常!

现在我怎样才能解决这个不合逻辑的问题,以便将两条路径保持在双引号内!

如何通过为源和目标设置双引号来让代码工作!

3 个答案:

答案 0 :(得分:2)

您可以尝试使用如下所示的字符串:

"\"C:\\Program Files (x86)\\Inno Setup 5\\compil32\\\"" + " /cc \"c:\\SetupScript.iss\"";

答案 1 :(得分:1)

尝试这两行,我尝试了它并且有效:

string cmdInnoSetup = @"""C:\Program Files (x86)\Inno Setup 5\compil32.exe"" /cc 'c:\SetupScript.iss'";
System.Diagnostics.Process.Start("cmd.exe", "/k " + cmdInnoSetup);

答案 2 :(得分:1)

您可以尝试以不同方式调用您的程序。如:

System.Diagnostics.Process.Start(@"C:\Program Files (x86)\Inno Setup 5\compil32.exe", @"/cc ""c:\SetupScript.iss""");

除非你真的需要cmd来执行输出,否则它应该基本相同。

(我自己并没有尝试使用InnoSetup,而是使用其他程序)