Как: Выполнить командную строку в C #, получить результаты STD OUT - PullRequest
435 голосов
/ 16 октября 2008

Как мне запустить программу командной строки из C # и получить результаты STD OUT? В частности, я хочу выполнить DIFF для двух файлов, которые программно выбраны, и записать результаты в текстовое поле.

Ответы [ 13 ]

3 голосов
/ 16 октября 2008

Это может быть не самый лучший / самый простой способ, но может быть вариант:

Когда вы выполняете из своего кода, добавьте "> output.txt" и затем прочитайте в файле output.txt.

2 голосов
/ 12 августа 2009

Существует класс ProcessHelper в PublicDomain с открытым исходным кодом, который может вас заинтересовать.

0 голосов
/ 01 марта 2018

Просто для удовольствия, вот мое законченное решение для получения вывода PYTHON - при нажатии кнопки - с отчетом об ошибках. Просто добавьте кнопку «butPython» и метку «llHello» ...

    private void butPython(object sender, EventArgs e)
    {
        llHello.Text = "Calling Python...";
        this.Refresh();
        Tuple<String,String> python = GoPython(@"C:\Users\BLAH\Desktop\Code\Python\BLAH.py");
        llHello.Text = python.Item1; // Show result.
        if (python.Item2.Length > 0) MessageBox.Show("Sorry, there was an error:" + Environment.NewLine + python.Item2);
    }

    public Tuple<String,String> GoPython(string pythonFile, string moreArgs = "")
    {
        ProcessStartInfo PSI = new ProcessStartInfo();
        PSI.FileName = "py.exe";
        PSI.Arguments = string.Format("\"{0}\" {1}", pythonFile, moreArgs);
        PSI.CreateNoWindow = true;
        PSI.UseShellExecute = false;
        PSI.RedirectStandardError = true;
        PSI.RedirectStandardOutput = true;
        using (Process process = Process.Start(PSI))
            using (StreamReader reader = process.StandardOutput)
            {
                string stderr = process.StandardError.ReadToEnd(); // Error(s)!!
                string result = reader.ReadToEnd(); // What we want.
                return new Tuple<String,String> (result,stderr); 
            }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...