在C#中执行cmd指令时,因空格导致执行出错的解决方法
最近在研究一个小工具,需要用C#执行一条cmd指令,其代码如下:
"C:\Program Files\TargetApp.exe" -install -name TargetAppName -logFile +"C:\Program Files\TargetAppLog.txt" -l "C:\Program Files\TargetApp.mlf"
可以看到其中包括了三个路径,且路径之中都有空格,这就导致这行代码在cmd中可以正常执行,但在C#中会提示
“C:\Program 不是内部或外部命令,也不是可运行的程序或批处理文件
。
经过对于命令逐渐删减排查,发现是在
-logFile +"C:\Program Files\TargetAppLog.txt"
的路径添加进去后出现的该提示,推测是这种格式触发了某种语句的格式导致了冲突。
那为什么在cmd里直接执行就正常,在C#里就不对劲了呢?
其实也很简单,因为在C#里的执行方式是:
string arg = "\"C:\\Program Files\\TargetApp.exe\" -install -name TargetAppName -logFile +\"C:\\Program Files\\TargetAppLog.txt\" -l \"C:\\Program Files\\TargetApp.mlf\"";
Process process = new Process();
ProcessStartInfo startInfo = new ProcessStartInfo
UseShellExecute = true,
WindowStyle = ProcessWindowStyle.Hidden,
FileName = "cmd.exe",