私は以下のコードを持っています。プロセス全体を取得する方法.StandardOutputを文字列として使用しますか?
Process compiler = new Process();
compiler.StartInfo.FileName = "cmd.exe";
compiler.StartInfo.Arguments = ("/C git push gitlab --delete branch");
compiler.StartInfo.UseShellExecute = false;
compiler.StartInfo.CreateNoWindow = false;
compiler.StartInfo.RedirectStandardOutput = true;
compiler.Start();
string output = compiler.StandardOutput.ReadToEnd();
compiler.WaitForExit();
compiler.Close();
私は、出力画面で、以下のデータを得た.But string output
でのみnull
値を取得します。
error: unable to delete 'branch': remote ref does not exist
error: failed to push some refs to ' https://gitlab.company.com/test2.git '
なぜoutput
文字列にNULL値があるのですか? プロセスcompiler.StandardOutput.ReadToEnd();
がその行をフェッチできなかったのはなぜですか?
false
をCreateNoWindow
に設定したため、コンソール画面で出力データを取得しました。そうでなければ、私はコンソール画面でデータを取得しませんでした。
Process.StandardOutPut
から出力画面データを取得する方法をお勧めします。
で所望の出力を得るには** stderr **、** stdout **ではなく、私は疑いがあります。 – arrowd
@arrowdが正しいです。 'StandardError'もリダイレクト(読み込み)する必要があります – spender
@arrowdが正しいです。stderrで出力を得ました。ありがとうたくさん:-) –