2012-03-01 24 views
3

私はコマンドラインでコマンドのprocess.start()を実行しようとし、文字列または役に立つlocaitonに出力を取得しようとします。出力はいくつかの行で構成されます(DIRコマンドのように)。私はそれをする方法を読んだが、それは私のために働かない。それは実行されますが、ループに入り、停止しません。以下を参照してください。何か案は?私のコマンドラインから標準出力をキャッチする方法は?

 ProcessStartInfo myProcessStartInfo = new ProcessStartInfo("cmd.exe", 
                    @" /k dir"); 
     Process myProcess = new Process(); 
     myProcess.StartInfo.RedirectStandardOutput = true; 
     myProcess.StartInfo.UseShellExecute = false; 
     myProcess.StartInfo.FileName = "cmd.exe"; 
     myProcess.StartInfo.Arguments = @" /k dir"; 
     myProcess.Start();   

     string ppp = myProcess.StandardOutput.ReadToEnd(); 
     myProcess.WaitForExit(); 
+0

[ASPXページからコマンドラインを実行すると、ページへの出力を返す]の可能な重複(http://stackoverflow.com/質問/ 247668 /実行中のコマンドラインからのaspxページと出力ページへの出力) – Shai

+0

[.NETで効率的に標準出力をリダイレクトする]の可能な複製(http://stackoverflow.com/質問/ 164736/redirect-standard-output-efficient-in-net) –

+0

まあ、すばやい返信をいただきありがとうございます。それは私のために働いていない...まだスタックして何もしていない場合は、ループの場合です – MottiNissim

答えて

3

あなたのプロセスは、あなたはそれがあなたのコマンドを実行した後に(生きているので、プロセス)開いているウィンドウを保つであろうcmd.exe/Kフラグを自分自身では決して出渡しているからです。

/Kの文字列で指定されたコマンドを実行するが、私はあなたがここに探しているが、それはあなたのコマンドを実行した後、コマンドウィンドウを閉じますどの/Cを使用することだと思い

のまま。

/Cは、文字列で指定されたコマンドを実行してから終了

+0

それは本当に助けられ、働きました。プロセスを実行しているときなど、cmd.exeで終了しないコマンドがあった場合はどうなりますか?cmd.exe sqlplus bla bla bla? sqlplus自体は終了しないので、プロセス全体が依然としてスタックされません... – MottiNissim

関連する問題