2017-01-26 3 views
1

私のプログラムにはcmdが含まれていましたが、新しいcmdを開始するので "cd"や "@echo off"のようなコマンドは使用できませんコマンドごとに私のプログラムにcmdを含める方法(単一のコマンドだけでなく)

if (e.KeyChar == (char)13) 
{ 
    Process cmd = new Process(); 
    cmd.StartInfo.FileName = "cmd.exe"; 
    cmd.StartInfo.RedirectStandardInput = true; 
    cmd.StartInfo.RedirectStandardOutput = true; 
    cmd.StartInfo.CreateNoWindow = true; 
    cmd.StartInfo.UseShellExecute = false; 
    cmd.Start(); 
    cmd.StandardInput.WriteLine(textBox1.Text); 
    cmd.StandardInput.Flush(); 
    cmd.StandardInput.Close(); 
    cmd.WaitForExit(); 

    richTextBox1.Text = cmd.StandardOutput.ReadToEnd(); 
} 

それがどうあるべきか:あなたはTextBox1テキストを入力し、Enterキーを押し、コマンドでTIPE場合、richtextbox1は、出力を表示する必要があり、あなたがしたい場合は、次のコマンド

+1

これを見てください:https://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/ntcmds_shelloverview.mspx?mfr=true複数のコマンドを実行する方法を示します一行に適切な区切り文字で文字列を作成し、すべてのコマンドを一度に渡すだけです。 –

+0

しかし、次のコマンド(dirのような)にtipeする前に出力を見たい場合は、 – SinOfficial

+1

あなたのプログラムの中に一時的なバッチを作成して、それを実行することができます。しかし、あなたがしたいことを本当に知らなくても、より多くを提案するのは難しい – Icepickle

答えて

0

にTIPEすることができますあなたのアプリケーションにコマンドラインを統合する私は、バックグラウンドでそれを起動し、入力ストリームをフィードし、その出力を読むことをお勧めします。

このようにして、パイプラインの種類を作成します。

StreamWriter writer = new StreamWriter(process.StandardInput); 
StreamReader reader = new StreamReader(process.StandardOutput); 

これらのストリームへのストアの参照と同じようにそれを使用する:

writer.WriteLine("dir"); 
string line = reader.ReadLine(); 

この方法は、コマンドラインに1つのコマンドだけを処理するたびに実行し、より効率的になります。

関連する問題