Выполнение командной строки из приложения Windows - PullRequest
1 голос
/ 11 мая 2010

Мне нужно выполнить командную строку из приложения Windows.

Я пытался с этим кодом, но я получил ошибку:

«C: \ Documents» не распознается как внутренняя или внешняя команда, действующая программа или командный файл.

var command ="\"C:\\Documents and Settings\\Administrator\\My Documents\\test.exe\" \"D:\\abc.pdf\" \"C:\\Documents and Settings\\Administrator\\My Documents\\def.pdf\"";

var processInfo = new ProcessStartInfo("cmd","/c " + command)
{
    UseShellExecute = false,
    RedirectStandardError = true,
    CreateNoWindow = true
};
var p = Process.Start(processInfo);

Ответы [ 3 ]

6 голосов
/ 11 мая 2010

Попробуйте использовать перегруженную версию Process.Start и передайте параметры во второй аргумент:

var command = @"C:\Documents and Settings\Administrator\My Documents\test.exe";
var parameters = @"""D:\abc.pdf"" ""C:\Documents and Settings\Administrator\My Documents\def.pdf""";

var p = Process.Start(command, parameters);

Предполагается, что вы пытаетесь вызвать test.exe с файлами PDF в качестве параметров.

6 голосов
/ 11 мая 2010

Не думаю, что вам нужно раскошелиться на cmd. Просто позвоните exe напрямую:

var command ="\"C:\\Documents and Settings\\Administrator\\My Documents\\test.exe\" \"D:\\abc.pdf\" \"C:\\Documents and Settings\\Administrator\\My Documents\\def.pdf\"";
var processInfo = new ProcessStartInfo(command)
                      {
                          UseShellExecute = false,
                          RedirectStandardError = true,
                          CreateNoWindow = true
                      };
var p = Process.Start(processInfo);
0 голосов
/ 11 мая 2010

Помимо того, что вам не нужно запускать процесс с помощью cmd.exe (как уже упоминалось в другом ответе), я думаю, вам нужно отделить аргументы командной строки от имени процесса, чтобы начать ; то есть. попробуйте что-то похожее на это:

var command   = @"C:\...\test.exe";
var arguments = @"D:\abc.pdf ...";

var processInfo = new ProcessStartInfo(command, arguments)
                  {
                      CreateNoWindow = true,
                      ...  // add other options as needed
                  };

var p = Process.Start(processInfo);

Как видите, имя исполняемого файла и аргументы командной строки перенесены в отдельные параметры конструктора ProcessStartInfo. (Вам, очевидно, нужно поместить туда правильные строки; для ясности я их сократил.)

...