C # Выполнить команду оболочки в текущем терминале - PullRequest
0 голосов
/ 06 декабря 2018

У меня есть консольное приложение C #, которое запускается из терминала.Мой вопрос заключается в том, как я могу выполнить команды оболочки, такие как color a0, dir или ping 1.1.1.1 и т. Д., в том же терминале (и / или получить вывод при необходимости)

Я видел только решения, которые запускают новый процесс cmd.exe и запускают там нужные команды и возвращают вывод, но я хотел бы знать, , если , можно сохранить выполнение команды втот же процесс.

Скажем, когда я вызываю myprogam.exe в консоли, я хочу, чтобы он изменил цвет консоли на зеленый.То, что большинство людей будет делать (я тоже в большинстве случаев), это сделать так:

Console.ForegroundColor = Color.Green;

Но это только изменится на текст, напечатанный позже.В любом случае, я хочу решение, подобное:

string command = "color a0";
System.Diagnostics.Process process = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.UseShellExecute = false;
startInfo.RedirectStandardOutput = true;
startInfo.FileName = "CMD.exe";
startInfo.Arguments = "/c " + command; // The Command
process.StartInfo = startInfo;
process.Start();
string output = process.StandardOutput.ReadToEnd();

Но предварительно выполняет задачу в том же терминале, в котором запущена программа.

...