'C:Program' 未被识别为内部或外部命令

'C:Program' not recognized as an internal or external command

试图将下面的代码发送到命令行,但出现错误。我知道发送到 CMD 的反斜杠存在问题。这里有关于如何发送的帮助吗?谢谢!

string strCmdText="/C C:\Program Files\MetaTrader 5\terminal64.exe /config:C:\Users\vguer036\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\config\common.ini";
System.Diagnostics.Process.Start("CMD.exe", strCmdText);

当你使用这个时:

string strCmdText="/C C:\Program Files\MetaTrader 5\terminal64.exe /config:C:\Users\vguer036\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\config\common.ini";
System.Diagnostics.Process.Start("CMD.exe", strCmdText);

那么您正在尝试启动应用程序 CMD.exe,这反过来又指示您执行特定的应用程序。但是,由于空格,CMD 试图执行的是带有参数 Files\MetaTrader5\terminal64.exe 等的命令 C:\Program。这就是您的错误消息的来源。

解决这个问题的一种方法是在文件名周围添加额外的引号(正如 Dour High Arch 评论的那样):

string strCmdText=@"/C ""C:\Program Files\MetaTrader 5\terminal64.exe"" ""/config:C:\Users\vguer036\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\config\common.ini""";

注意双引号,这是在逐字字符串文字 (@"...") 中使用文字引号所必需的。

但是这样您仍然在执行一个应用程序 (CMD.exe) 以启动另一个应用程序 (terminal64.exe)。为什么不直接启动那个 terminal64?

System.Diagnostics.Process.Start(
     @"C:\Program Files\MetaTrader 5\terminal64.exe",
     @"/config:C:\Users\vguer036\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\config\common.ini");

您应该试验一下是否需要在该应用程序名称周围加上额外的引号,但我认为不需要。