Ausgabe in Date umleiten bei Process()?


AlbertT

Grünschnabel
Hallo,

ich starte ein Programm mit Process.Start(name,parameter)
jetzt möchte ich die Ausgabe gerne in eine Datei umleiten.

unter DOS würde das so aussehen name parameter > umleitung.txt.

wenn ich in den parameter-String " > umleitung.txt" schreibe beendet sich der Prozess gleich wieder, gibt es eine Möglichkeit wie ich das hinbekommen kann?

Schon mal vielen Dank für eure Antworten.

Gruß
Albert
 

LieberNet

Mitglied
Hi Albert!
Das mit dem Umleiten ">filename.ext" wird vom Betriebssystem gemacht und muss im Programm nicht implementiert werden. D.h. die Argumente werden beim Programmstart gefiltert und Ausgabeumleitungen aus der Argumentliste entfernt. So siehts bei der CommandLine aus.
Wenn Du das Ganze dann aber über Process.Start im C# machst, wird die Umleitung AUCH an das Programm als Argument übergeben. Es kann natürlich sein, das Dein Programm mit diesem Argument nicht zurechtkommt und sich daher gleich wieder beendet. Die Ausgaben Deines Prozesses kannst Du Dir aber direkt in Dein Programm reinholen und damit tun was Du willst. Weil gleich viel komfortabler :) Also dieser Umleitstring ">filename.ext" darf nicht in den Argumenten übergeben werden
Code:
                Process p = new Process();
                p.StartInfo.FileName = "C:\\MeinProgramm.exe";
                p.StartInfo.Arguments = "-argumente";
                p.StartInfo.UseShellExecute = false;
                p.StartInfo.RedirectStandardOutput = true;
                p.Start();
                string op = p.StandardOutput.ReadToEnd();
                MessageBox.Show(op);
Im op String befinden sich die Ausgaben Deiner Exe. Die hier mal mit einer MsgBox ausgegeben werden. Du kannst natürlich über das StandardOutput jede Ausgabe auch einzeln lesen usw.. (=StreamReader)
Hoffe ich konnte Dir helfen.
Ciao
LieberNet
 
Zuletzt bearbeitet: