使用带空格的路径调用ProcessStartInfo总是会中断

时间:2015-04-02 14:15:13

标签: c# .net processstartinfo

我使用以下配置调用命令行程序:

var processStartInfo = new ProcessStartInfo {
    FileName = mainCommand,
    UseShellExecute = false,
    RedirectStandardOutput = true,
    RedirectStandardError = true,
    CreateNoWindow = true,
};

当我运行mainCommand作为没有空格的路径时,它始终有效,如果命令路径上有空格则失败:

Could not find the command file at C:\Users\Some

实际路径为:

C:\Users\Some User\AppData\Local\Temp\Process.exe

那么,为什么它没有被转义,有没有办法可以转义这个路径名来防止这个错误?

1 个答案:

答案 0 :(得分:2)

尝试用引号包装它:

string targetExe = "\"C:\\this path with spaces\\helloWorld.exe\"";

它就像这样,但它也可以工作,而不必担心它像帕特里克霍夫曼说。看起来你的系统有些不同。

如果您想传递参数,请通过Arguments中的ProcessStartInfo进行操作。显然,如果它们也有空格(即:/arg1 "An Argument"),则必须将它们用上面的引号括起来。