2013-03-05 10 views
12

Voglio eseguire un comando shell da C# e utilizzare le informazioni di ritorno all'interno del mio programma. Così ho già sanno che per eseguire qualcosa da terminale ho bisogno di fare una cosa del genereEsegui comandi shell usando C# e ottieni le informazioni nella stringa

string strCmdText; 
strCmdText= "p4.exe jobs -e"; 
System.Diagnostics.Process.Start("CMD.exe",strCmdText); 

così ora comando eseguito, e da questo comando alcune informazioni vengono restituite ... la mia domanda è come si può utilizzare queste informazioni nel mio programma, probabilmente qualcosa a che fare con gli argomenti della riga di comando, ma non è sicuro ...

so che è molto più facile farlo con linguaggi di scripting come Python, ma davvero bisogno di utilizzare C#

+0

Vedere http://stackoverflow.com/q/1585354 –

+0

Le domande collegate indicano come ottenere il * valore di ritorno * da un processo; questa domanda sembra più come vuole l'* output * da un programma, che è http://stackoverflow.com/questions/14115768/reading-output-from-another-running-application –

risposta

35

è può reindirizzare l'output con ProcessStartInfo. Ci sono esempi su MSDN e SO.

E.G.

Process proc = new Process { 
    StartInfo = new ProcessStartInfo { 
     FileName = "program.exe", 
     Arguments = "command line arguments to your executable", 
     UseShellExecute = false, 
     RedirectStandardOutput = true, 
     CreateNoWindow = true 
    } 
}; 

quindi avviare il processo e leggere da esso:

proc.Start(); 
while (!proc.StandardOutput.EndOfStream) { 
    string line = proc.StandardOutput.ReadLine(); 
    // do something with line 
} 

seconda di cosa si sta cercando di realizzare è possibile ottenere molto di più pure. Ho scritto app che trasmettono i dati alla riga di comando in modo asincrono e leggono anche da esso. Un simile esempio non è facilmente pubblicato su un forum.

+0

perfetto! grazie a Brian! – inside

+0

questa è la perfezione !!! – ifelsemonkey

Problemi correlati