Есть ли способ запустить команду CMD, используя c#, не разбивая ее на имя файла и аргументы? - PullRequest
0 голосов
/ 20 февраля 2020

Я работаю над программным обеспечением, которое анализирует файл с командами, и ему нужно выполнить все команды. Просматривая StackOverFlow, я нашел следующий фрагмент:

String command = @".\wrap.exe sys";
using (Process myProcess = new Process())
{
    myProcess.StartInfo.UseShellExecute = false;
    // You can start any process, HelloWorld is a do-nothing example.
    myProcess.StartInfo.RedirectStandardOutput = true;
    myProcess.StartInfo.FileName = "CMD.exe";
    myProcess.StartInfo.CreateNoWindow = true;
    myProcess.StartInfo.Arguments = command; 
    myProcess.Start();
    string output = myProcess.StandardOutput.ReadToEnd();
    myProcess.WaitForExit();

}

По какой-то причине команда myProcess.StandardOutput.ReadToEnd() зависает, если я ее запускаю (Даже если я изменяю порядок этой команды и этой команды myProcess.WaitForExit() и стандарт Команда вывода ошибок также зависает (какие-либо идеи, почему эти команды зависают?).

Если я изменю FileName = "CMD.exe" на FileName = "wrap.exe" и Arguments ="sys", это будет работать. Проблема в том, что я не хочу разбивать это к аргументам и fileName. Есть ли способ сделать это (например, в Python с использованием подпроцесса)?

...