Ich muss 2 Dinge tun: eine Batch-Datei (funktioniert gut), und einen Befehl ausführen (funktioniert nicht). Die Methode für den Befehl löst die Ausnahme 'Datei nicht gefunden' aus. Wenn ich ein cmd-Fenster öffne und den Befehl eintippe, funktioniert es einwandfrei.Wie führe ich Kommandozeilenbefehle aus dem Code
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);
}
}
Der kommentierte Code löst auch die gleiche Ausnahme aus.
Ich habe aber 1 upvote zu geben. Vielen Dank! – callisto
Aus irgendeinem witzigen Grund ist das ein häufiger Fehler sowohl mit System.Diagnostics.Process als auch mit dem nativen ShellExecute (Ex), obwohl es eindeutig ein "FileName" -Parameter ist :) – OregonGhost
Ich würde Dateiname auf den Dateinamen (devcon.exe) und setzen Verwenden Sie proc.StartInfo.Arguments, um das ReScan-Argument zu übergeben. Nur um klar zu sein, was was ist. –