ProcessStartInfo的参数需要引号,总是转义

时间:2016-03-23 20:18:55

标签: c# process processstartinfo

如果我在命令提示符下运行以下命令,它可以工作:

"C:\Program Files (x86)\AppFolder\do.exe"

如果我尝试运行与进程相同的东西:

        ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
        startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
        startInfo.FileName = "cmd.exe";
        startInfo.Arguments = @"/c ""C:\Program Files (x86)\AppFolder\do.exe""";

        using (Process process = Process.Start(startInfo))
        {
          ...
        }

似乎没有运行。如果我查看startInfo.Arguments,它显示如下:

/c \"C:\\Program Files (x86)\\AppFolder\\do.exe\"

我错过了什么?你能不传递带引号或空格的参数吗?我看到很多例子,人们正在传递带有空格/引号的项目,但是跟随它们似乎并不起作用。这是我能想到的最狭窄的例子。

编辑:如果我只是创建一个快捷方式,所以我不使用空格或引号,它可以工作:

startInfo.Arguments = @"/c D:\_test\Do.lnk";

1 个答案:

答案 0 :(得分:1)

我不使用'@'。这是正确的实施:

startInfo.Arguments = "/c \"C:\\Program Files (x86)\\AppFolder\\do.exe\"";