アプリケーションからバッチファイルを呼び出そうとしていますが、コマンドウィンドウを非表示にし、標準出力を(バッチファイルによって生成された)1つ以上の場所にリダイレクトする必要があります。バックグラウンドでバッチファイルをどのように起動し、その出力をリダイレクトしますか?
私の問題は、バッチファイルが実行されているときに、コンソールが起動して何も表示されないことです。それはちょうど上です。タスクが完了すると、コンソールが閉じます。私はコンソールを取り除きたいと思う(おそらくそれはバックグラウンドで実行している)。
もう1つの問題は、出力をリッチテキストボックスにリダイレクトしていることです。コンソールやテキストボックスにリダイレクトすると、すべての結果がすぐに吐き出されます。私はそれが起こるように行ごとに吐き出すことを望みます。理にかなっている?
コードは以下の通りです:
//Declare and instantiate a new process component.
System.Diagnostics.Process process1;
process1 = new System.Diagnostics.Process();
process1.StartInfo.UseShellExecute = false;
process1.StartInfo.RedirectStandardOutput = true;
process1.StartInfo.FileName = "cmd.exe";
process1.StartInfo.Arguments = "<BATCHfILE>";
process1.Start();
string output = process1.StandardOutput.ReadToEnd();
rchsdtOut.Text = output;
Console.WriteLine(process1.StandardOutput.ReadToEnd());
process1.WaitForExit();
process1.Close();
私はこれを試してみましょう。 – user1158745
あなたは上記のことをやったのですが、行ごとにコンソール上のイベントを印刷しているわけではありません。それを1つのチャンクにまとめるだけです。 – user1158745
申し訳ありませんが、私の間違いです。私はちょうどコンソールに書き込もうとしていますが、何も書いていません。 Console.WriteLine(e.Data.ToString()); – user1158745