2011-06-02 13 views
3

からコードを出力を取得できません以下のとおりである。はcmd.exeを実行

ProcessStartInfo startInfo = new ProcessStartInfo("cmd", "/c" + command); 
startInfo.CreateNoWindow = true; 
startInfo.UseShellExecute = false; 
startInfo.WindowStyle = ProcessWindowStyle.Normal; 
startInfo.Arguments = arguments; 
startInfo.RedirectStandardError = true; 
startInfo.RedirectStandardOutput = true; 

Process process = Process.start(startInfo); 
StreamReader srOutput = process.StandardOutput; 
string output = srOutput.ReadToEnd(); 

コマンドは、私は、変数output COS内の「システムは指定されたファイルを見つけることができません」を取得することを期待rmdir /s /q 123

です"123"は存在しないファイルパスです。しかし、outputは空の文字列です。なぜ、どのように私は出力を得ることについて行くshld?

+0

まだ疑問があります。下記のコメントを参照してください... – yeeen

答えて

5

あなたが見たいメッセージは、StandardOutputではなくStandardErrorになります。

+0

なぜ時々、予想されるエラーmsgが出力に表示されるのですか?たとえば、MOVEコマンドの場合、宛先パスのために開いた逆のコンマを置かなかったとします。 "コマンドが正しくない場合の構文" msgは 'StandardError'の代わりに 'StandardOutput'にあり、 'StandardError'は空です。 – yeeen

+0

コマンドラインプロセッサを使用しています。ユーザーが誤ってコマンドを入力すると、それをエラーと呼ぶのはあまりにも一般的です。これを行うにはcmd.exeを使用しないでください。代わりにSystem.IO名前空間のクラスを使用してください。 –

+0

@yeeen - Microsoftがコマンドを実行するコードを書くのに矛盾しているだけです。 –

関連する問題