#c# #cmd #process
#c# #cmd #процесс
Вопрос:
Я пытаюсь запустить процесс CMD из моей программы, который запускает другой процесс, который перенаправляет вывод и ошибки в файл. И у меня должен быть код выхода этого процесса.
var exe = pathToExe
var output = Path.GetTempFileName();
var process = Process.Start(new ProcessStartInfo
{
FileName = "cmd",
Arguments = $"/c "{exe} {command} > {output} 2<amp;1" amp; echo %errorlevel% > {output})",
Verb = "runas",
UseShellExecute = true,
CreateNoWindow = true,
WindowStyle = ProcessWindowStyle.Hidden
});
process.WaitForExit();
var res = File.ReadAllText(output);
Console.WriteLine(res);
Та же команда (cmd / c «pathToExe command > output 2<amp;1» amp; echo%errorlevel% > output) отлично работала в cmd, но в этом коде уровень ошибки всегда равен 0 (я предполагаю, что это просто уровень ошибки процесса cmd)
На этом этапе вы можете спросить меня, почему я вообще использую cmd для запуска процесса… Ну, я пробовал
using (var process = CreateProcess(processName, argumnets))
{
var error = 0;
var output = Path.GetTempFileName();
process.StartInfo.UseShellExecute = true;
process.StartInfo.Verb = "runas";
process.StartInfo.Arguments = $"{command} > {output} 2<amp;1";
process.Start();
process.WaitForExit();
statusInfo = File.ReadAllText(output);
File.Delete(output);
if (process.ExitCode != 0)
{
error = process.ExitCode;
}
return error;
}
Но у меня это не сработало.
Также я не могу перенаправить выходные данные программно из-за процесса.StartInfo.UseShellExecute.
Комментарии:
1. Какой конкретный процесс вы пытаетесь запустить? Почти всегда неправильно начинать
cmd.exe
.2. Это мой программный процесс, также написанный мной. Если это неправильно, то как я могу выйти из процесса, запущенного с помощью Verb = «runas»?
3. Ну, я запустил, есть его код. У меня это не сработало
4. Вы не можете этого сделать
{command} > {output} 2<amp;1"
, поскольку последний бит обрабатывается интерпретатором команд (cmd.exe ). Пожалуйста, объясните, почему вы хотите2<amp;1
.5. Потому что я хочу иметь и стандартный вывод, и стандартный вывод в моем файле.