Я пытаюсь выполнить команды командной строки и прочитать вывод на C#. Это мой код:Выход командной строки, считанный пустой строкой
ProcessStartInfo cmdInfo = new ProcessStartInfo("cmd.exe", "/c " + command);
cmdInfo.CreateNoWindow = true;
cmdInfo.RedirectStandardOutput = true;
cmdInfo.UseShellExecute = false;
Process cmd = new Process();
cmd.StartInfo = cmdInfo;
cmd.Start();
string result = cmd.StandardOutput.ReadToEnd();
cmd.WaitForExit();
cmd.Close();
return result;
Он работает большую часть времени, но иногда приводят = «», когда это невозможно для команды, я использую (например, маршрут добавить должен дать выход на успех или неудачу). Есть идеи? Мне было интересно, может быть, я создал условие гонки между процессом и вызовом ReadToEnd?
Удивительный! При этом моя проблема была совершенно исправлена. Мне любопытно, хотя, когда команды успешны, почему «ОК!» написано на StandardError? – akroy
приложение может писать все, что захочет, в зависимости от того, какой он хочет. Часто утилит командной строки записывает сообщение о состоянии в стандартную ошибку, поскольку стандартный вывод часто перенаправляется в файл; сообщение «ОК» на stderr все равно будет отображаться на экране, но не будет выводиться, если вы хотите его проанализировать. –
Ах, так по существу, потому что ОК! не является полезным из контекста. Я думаю, что все имеет смысл, спасибо! – akroy