我使用以下配置调用命令行程序:
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
那么,为什么它没有被转义,有没有办法可以转义这个路径名来防止这个错误?
答案 0 :(得分:2)
尝试用引号包装它:
string targetExe = "\"C:\\this path with spaces\\helloWorld.exe\"";
它就像这样,但它也可以工作,而不必担心它像帕特里克霍夫曼说。看起来你的系统有些不同。
如果您想传递参数,请通过Arguments
中的ProcessStartInfo
进行操作。显然,如果它们也有空格(即:/arg1 "An Argument"
),则必须将它们用上面的引号括起来。