Heim >Backend-Entwicklung >C++ >Wie kann ich Batchdateien in C# effektiv ausführen und ExitCode 1-Fehler beheben?
aus Stapeldateien in C#ist normalerweise sehr einfach, kann jedoch in einigen Fällen auf Schwierigkeiten stoßen. Bei der Begegnung eines unbekannten ExitCode 1 (normalerweise ein allgemeiner Fehler) muss der spezifische Grund untersucht werden.
Eine gemeinsame Methode zum Ausführen von Stapeldateien ist im folgenden Codefragment angezeigt:
In einigen Fällen hat dieser Code jedoch möglicherweise nicht die erwarteten Ergebnisse. Für den Ausschluss des Fehlers können der Ausgangs- und Fehlerfluss erfasst werden und der Inhalt überprüft werden.
<code class="language-csharp">public void ExecuteCommand(string command) { int ExitCode; ProcessStartInfo ProcessInfo; Process Process; ProcessInfo = new ProcessStartInfo("cmd.exe", "/c " + command); ProcessInfo.CreateNoWindow = true; ProcessInfo.UseShellExecute = false; Process = Process.Start(ProcessInfo); Process.WaitForExit(); ExitCode = Process.ExitCode; Process.Close(); MessageBox.Show("ExitCode: " + ExitCode.ToString(), "ExecuteCommand"); }</code>
Durch Überprüfen von Ausgangs- und Fehlerfluss kann das grundlegende Problem, das ein Fehler verursacht, bestimmt werden.
<code class="language-csharp">static void ExecuteCommand(string command) { int exitCode; ProcessStartInfo processInfo; Process process; processInfo = new ProcessStartInfo("cmd.exe", "/c " + command); processInfo.CreateNoWindow = true; processInfo.UseShellExecute = false; // 重定向输出流 processInfo.RedirectStandardError = true; processInfo.RedirectStandardOutput = true; process = Process.Start(processInfo); process.WaitForExit(); // 读取流 string output = process.StandardOutput.ReadToEnd(); string error = process.StandardError.ReadToEnd(); exitCode = process.ExitCode; Console.WriteLine("output>>" + (String.IsNullOrEmpty(output) ? "(none)" : output)); Console.WriteLine("error>>" + (String.IsNullOrEmpty(error) ? "(none)" : error)); Console.WriteLine("ExitCode: " + exitCode.ToString(), "ExecuteCommand"); process.Close(); } static void Main() { ExecuteCommand("echo testing"); }</code>
Andere Vorsichtsmaßnahmen:
Wenn Batch -Dateien im Verzeichnis c: WindowsSystem32 ausgeführt werden, können bestimmte Sicherheitseinstellungen die korrekte Ausführung beeinträchtigen. Das Verschieben der Stapeldatei in andere Positionen kann dieses Problem lösen.
Um tote Schlösser zu vermeiden, wird empfohlen, asynchrone Methoden zum Lesen von Ausgangs- und Fehlerfluss zu verwenden. Dies kann mit dem folgenden Code implementiert werden:
Wenn Sie diese Richtlinien befolgen und Ausgangs- und Fehlerfluss untersuchen, können Sie Stapeldateien in C#effektiv durchführen und alle aufgetretenen Probleme lösen.
Das obige ist der detaillierte Inhalt vonWie kann ich Batchdateien in C# effektiv ausführen und ExitCode 1-Fehler beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!