Мне нужно сделать 2 вещи: запустить командный файл (отлично работает) и запустить команду (не работает). Метод команды выдает исключение «файл не найден». Если я открою окно cmd и набираю команду, он отлично работает.Как выполнить команды командной строки из кода
private static void Rescan()
{
//System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo("DEVCON ReScan");
//psi.RedirectStandardOutput = true;
//psi.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
//psi.UseShellExecute = false;
//System.Diagnostics.Process proc = System.Diagnostics.Process.Start(psi);
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo.FileName = "DEVCON ReScan";
proc.StartInfo.RedirectStandardError = true;
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.UseShellExecute = false;
proc.Start();
proc.WaitForExit();
System.IO.StreamReader myOutput = proc.StandardOutput;
proc.WaitForExit(4000);
if (proc.HasExited)
{
string output = myOutput.ReadToEnd();
FileIO.WriteLog(_writePath, output);
}
}
Прокомментированный код также вызывает то же исключение.
У меня есть только 1 upvote, чтобы дать. Благодаря! – callisto
По какой-то смешной причине это распространенная ошибка как с System.Diagnostics.Process, так и с родным ShellExecute (Ex), хотя это явно параметр «FileName» :) – OregonGhost
Я бы установил filename в filename (devcon.exe) и используйте proc.StartInfo.Arguments для передачи в аргументе ReScan. Просто чтобы было ясно, что это такое. –