Программа командной строки / приложение + метод класса C # - PullRequest
0 голосов
/ 04 июля 2011

При работе с программой командной строки, с помощью метода класса ac #.

Как определить, успешно ли была выполнена программа командной строки и выполнена ли она в порядке или нет?

Кроме того, как получить вывод командной строки экрана в метод класса c #?

Ответы [ 5 ]

3 голосов
/ 04 июля 2011

Вы можете использовать класс Process для выполнения команды командной строки.

Следующий код захватывает стандартный вывод для output и присваивает код завершения процессов exitCode.

using (Process p = new Process())
{
    p.StartInfo.FileName = exeName;
    p.StartInfo.Arguments = args;
    p.StartInfo.UseShellExecute = false;
    p.StartInfo.RedirectStandardOutput = true;
    p.Start();
    string output = p.StandardOutput.ReadToEnd();
    p.WaitForExit();
    int exitCode = p.ExitCode;
}
1 голос
/ 04 июля 2011

Что-то вроде:

Process mycommand = new Process();
mycommand.StartInfo.FileName = "myexe.exe";
mycommand.StartInfo.Arguments = "param1";
mycommand.StartInfo.UseShellExecute = false;
mycommand.StartInfo.RedirectStandardOutput = true;
mycommand.Start();    
Console.WriteLine(mycommand.StandardOutput.ReadToEnd());
mycommand.WaitForExit();

Обычно вы определяете состояние exe, когда код выхода равен 0, но это, вероятно, зависит от автора exe

0 голосов
/ 04 июля 2011

Для этого вы используете метод Process.Start. Вы можете контролировать ход процесса с помощью переданного значения ProcessStartInfo:

var myProcess = Process.Start(new ProcessStartInfo {
  FileName = "process.exe",
  UseShellExecute = false,
  RedirectStandardOutput = true,
  CreateNoWindow = true
});
if (!myProcess.WaitForExit(5000)) { // give it 5 seconds to exit
  myProcess.Kill();
}
if (myProcess.ExitCode != 0) {
  // error!
}
var output = myProcess.StandardOutput.ReadToEnd(); // access output
0 голосов
/ 04 июля 2011

Посмотрите на этот вопрос введите описание ссылки здесь .

Дополнительная информация, которая может вам понадобиться, - process.ExitCode, чтобы увидеть, была ли она успешной.Конечно, метод Main консольного приложения должен возвращать код завершения в случае неудачи, чего нет у многих.

0 голосов
/ 04 июля 2011

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

Вы можете найти код выхода процесса, используя Process.ExitCode. Вы можете перенаправить его стандартный вывод, установив ProcessStartInfo.RedirectStandardOutput перед его запуском, а затем либо используя Process.StandardOutput, либо событие Process.OutputDataReceived.

...