C: программа не распознана как внутренняя или внешняя команда - PullRequest
0 голосов
/ 30 марта 2020

Пытаюсь отправить приведенный ниже код в командную строку, но я получаю ошибки. Я знаю, что есть проблема с обратными слешами, отправленными в 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);

1 Ответ

0 голосов
/ 08 апреля 2020

Когда вы используете это:

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 пытается выполнить команду C:\\Program с параметрами Files\\MetaTrader, 5\\terminal64.exe et c. Вот откуда приходит ваше сообщение об ошибке.

Один из способов решить эту проблему - добавить дополнительные кавычки вокруг имени файла (как прокомментировала 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) для запуска другого (терминал64.exe). Почему бы не запустить этот терминал 64 напрямую?

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

Вам следует поэкспериментировать, чтобы узнать, нужны ли вам дополнительные кавычки вокруг названия этого приложения, но я так не думаю.

...