Як отримати відповідь від програми у командному рядку cmd
Наприклад пишемо C:\app.exe /h тиснемо Enter і отримуємо відповідь "Команда виконана".
Windows Form - C# (файл Program.cs)
Для цього є кілька варіантів:
створити нову консоль:
приточиться до консолі:
Тобто якщо Ви запускаєте свою програму з вже запущеної консолі, або з Far Manager то щоб отримати результат у їх вікно виведення - використовуйте другий варіант. Перший, якщо консоль потрібно створити.
У .NET для запуску нового процесу використовують статичний метод Process.Start, який повертає екземпляр класу Process. Цей клас має властивість, яка надає доступ до потоку, в який програма може виводити повідомлення: StandardOutput. Доступ дається не безпосередньо, а через StreamReader, що навіть зручніше. Для того, щоб програма виводила результат не в консоль, а в StandardOutput, необхідно у властивостях процесу (ProcessStartInfo) включити опцію RedirectStandardOutput.
Якщо перед вами стоїть завдання запустити консольну програму зі своєї програми та прочитати те, що вона виведе в консоль, скористайтеся методом Process.Start для запуску програми, і використовуйте StreamReader отриманий зі StandardOutput, щоб прочитати результат. Наприклад, можна прочитати всі дані, які містять потік у текстовому форматі, використовуючи метод ReadToEnd.
Але є нюанс. Не можна відразу взяти та прочитати відповідь, тому що процесу потрібен деякий час щоб виконати роботу та вивести результат у консоль. Метод ReadToEnd очікуватиме завершення процесу. Якщо під час очікування необхідно, щоб ваша програма продовжувала функціонувати (наприклад, перемальовувати вікно, реагувати на дії користувача), використовуйте метод ReadToEndAsync, якийвикличе делегат по завершенню та передасть йому результат, або метод ReadLine, який повертає управління у міру отримання рядків, а не чекає на закінчення процесу.
Приклад взято та перероблено з цієї статті: Запуск командного рядка та отримання відповіді.
Код вийшов такий (сподіваюся помилок у ньому немає):