でバッチファイルを実行します C#でバッチファイルの実行は通常非常に簡単ですが、場合によっては困難に遭遇する可能性があります。未知の出口1(通常は一般的なエラー)に遭遇した場合、特定の理由を調査する必要があります。
バッチファイルを実行する一般的な方法は、次のコードフラグメントに示されています。ただし、場合によっては、このコードには予想される結果がない場合があります。障害の除外のために、出力とエラーの流れをキャプチャし、コンテンツを確認できます。
出力とエラーの流れをチェックすることにより、障害を引き起こす基本的な問題を決定できます。
<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>
その他の注意事項:
<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>
C:WindowsSystem32ディレクトリでバッチファイルを実行すると、特定のセキュリティ設定が正しい実行を妨げる場合があります。バッチファイルを他の位置に移動すると、この問題を解決できます。
死んだロックを避けるために、非同期方法を使用して出力とエラーの流れを読み取ることをお勧めします。これは、次のコードを使用して実装できます これらのガイドラインに従って出力とエラーの流れを調査することにより、C#でバッチファイルを効果的に実行し、遭遇した問題を解決できます。
以上がC# でバッチ ファイルを効果的に実行し、ExitCode 1 エラーをトラブルシューティングするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。