2016-08-14 27 views
0

コマンドウィンドウの出力をファイルに書き込もうとしています。出力を正しく取得でき、コンソールを使用して表示できます。しかし、私が書きたいファイルにはログインしていないようですね。C#のファイルにコンソールの出力を書き込む?

using (StreamWriter sw = new StreamWriter(CopyingLocation, true)) 
    { 
    Process cmd = new Process(); 

    cmd.StartInfo.FileName = "cmd.exe"; 
    cmd.StartInfo.RedirectStandardInput = true; 
    cmd.StartInfo.RedirectStandardOutput = true; 
    cmd.StartInfo.CreateNoWindow = false; 
    cmd.StartInfo.UseShellExecute = false; 

    cmd.Start(); 


    string strCmdText = "Some Command"; 
    string cmdtwo = "Some Other Command"; 


    cmd.StandardInput.WriteLine(cmdtwo); 
    cmd.StandardInput.WriteLine(strCmdText); 
    cmd.StandardInput.Flush(); 
    cmd.StandardInput.Close(); 

    //Writes Output of the command window to the console properly 
    Console.WriteLine(cmd.StandardOutput.ReadToEnd()); 

    //Doesn't write the output of the command window to a file 
    sw.WriteLine(cmd.StandardOutput.ReadToEnd()); 
    } 

答えて

4

あなたはそれがすべてを読みますと、すべての出力が消費されたReadToEnd()を呼び出します。もう一度呼び出すことはできません。

出力を変数に格納してコンソールに出力し、ファイルに書き込む必要があります。

string result = cmd.StandardOutput.ReadToEnd(); 
Console.WriteLine(result); 
sw.WriteLine(result); 
+0

ありがとうございました!驚くばかり! – chillax786

関連する問題