通常会带来挑战。 本指南解决了常见的执行失败,尤其是令人沮丧的“出口:1”错误,并提供了强大的解决方案。
>“出口:1”通常会在批处理文件的执行中向一般错误发出信号。 问题不一定在您的c#代码中,而是在批处理脚本本身或其与系统的互动中。
>有效调试需要从批处理文件中捕获标准输出和错误流。 重定向这些流提供了对失败原因的关键见解。
>以下代码有效地处理流重定向以捕获输出和错误:
<code class="language-csharp">static void ExecuteCommand(string command) { var processInfo = new ProcessStartInfo("cmd.exe", "/c " + command); processInfo.CreateNoWindow = true; processInfo.UseShellExecute = false; processInfo.RedirectStandardError = true; processInfo.RedirectStandardOutput = true; using (var process = Process.Start(processInfo)) { process.OutputDataReceived += (sender, e) => Console.WriteLine($"output>>{e.Data ?? "(none)"}"); process.ErrorDataReceived += (sender, e) => Console.WriteLine($"error>>{e.Data ?? "(none)"}"); process.BeginOutputReadLine(); process.BeginErrorReadLine(); process.WaitForExit(); Console.WriteLine($"ExitCode: {process.ExitCode}"); } }</code>
进行适当的资源管理和Null-Coalescing Operator(using
)用于清洁错误处理。 分析捕获的输出和错误消息将查明问题。??
>目录中可以触发安全限制,从而导致“ exitCode:1”。 为了避免这种情况,请始终将批处理文件存储在更合适的位置,例如应用程序目录。
System32
>异步流处理以提高效率和稳定性
>
BeginOutputReadLine
结论BeginErrorReadLine
以上是如何在 C# 中有效执行批处理文件并排除'ExitCode: 1”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!