Laden...

Ausgang eines aufgerufenen Consolen-Programms anzeigen UND in Datei umleiten

Erstellt von christof.k vor 18 Jahren Letzter Beitrag vor 18 Jahren 1.536 Views
C
christof.k Themenstarter:in
159 Beiträge seit 2005
vor 18 Jahren
Ausgang eines aufgerufenen Consolen-Programms anzeigen UND in Datei umleiten

Hallo!

Ich rufe per

Process myProcess = new Process();
myProcess.StartInfo.FileName = "pcli";
myProcess.StartInfo.UseShellExecute = true;
myProcess.Start();

Das Consolen-Programm PCLI.exe auf. Nun möchte ich das Ergebniss anzeigen lassen (wie es bisher geschieht) UND in eine Datei umleiten.
Gibt es dafür eine einfache Lösung oder schon fertige Klassen die auch keine Probleme mit cout / cerr overflow haben?

Vielen Dank
Christof

A
57 Beiträge seit 2005
vor 18 Jahren

Hi,
hab Dein Problem noch nicht ganz verstanden. Möchtest Du einfach ein Ergebnis einer Berechnung oder ähnlichem in eine Datei (was für eine Datei überhaupt XML / Text) schreiben ???
Oder möchtest Du den Inhalt der Konsole in eine Datei schreiben ???

Versuch mal Deine Probleme besser zu umschreiben. 😉

49.485 Beiträge seit 2005
vor 18 Jahren

Hallo christof.k,


Process myProcess = new Process();
myProcess.StartInfo.FileName = "cmd";
myProcess.StartInfo.Arguments = "/k pcli | tee datei";
myProcess.StartInfo.UseShellExecute = true;
myProcess.Start();

tee.exe gibt es z.B. von http://unxutils.sourceforge.net

herbivore

4.221 Beiträge seit 2005
vor 18 Jahren

@herbivore

Das geht auch mit Bordmitteln 🙂

cmd.exe /k dir . /s /b > test.txt | type test.txt

Wäre sicher einen Versuch Wert ob es mit pcli läuft.

Gruss
Programmierhans

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

49.485 Beiträge seit 2005
vor 18 Jahren

Hallo Programmierhans,

bei mir geht es mit der Pipe nicht. Allerdings geht es mit & oder && statt der Pipe.

Trotzdem ist es gemogelt 🙂 weil die Ausgabe erst nach Programmende beginnt. tee schreibt gleichzeitig auf den Schirm und die Datei.

herbivore

4.221 Beiträge seit 2005
vor 18 Jahren

@hebivore

Bei mir fängt die Ausgabe aber sofort an ...

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

49.485 Beiträge seit 2005
vor 18 Jahren

Hallo Programmierhans,

vielleicht ein Unterschied zwischen Win2k und XP?

herbivore

4.221 Beiträge seit 2005
vor 18 Jahren

Original von herbivore

vielleicht ein Unterschied zwischen Win2k und XP?

Könnte sein..... ich habe Win2K

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

C
christof.k Themenstarter:in
159 Beiträge seit 2005
vor 18 Jahren

Das mit dem tee war ja suppi. Läuft perfekt.
Gibt es noch andere Unix-Tools die das tägliche Leben erleichtern?

Christof

P.S.: Wie kann ich denn die Farbe des CMD-Fensters ändern? Als commandline würde ich COLOR xy eingeben, aber wenn ich den Process starte, kann ich ihm ja nicht mehrere Befehle auf dem Weg geben, oder?

49.485 Beiträge seit 2005
vor 18 Jahren

Hallo christof.k,

Gibt es noch andere Unix-Tools die das tägliche Leben erleichtern?

Massenhaft! 🙂

aber wenn ich den Process starte, kann ich ihm ja nicht mehrere Befehle auf dem Weg geben, oder?

Doch kannst du mit & oder &&. Also z.B. cmd /k color xy & tuewas.

herbivore

PS: ... oder in dem du eine Batch-Datei aufrufst.

C
christof.k Themenstarter:in
159 Beiträge seit 2005
vor 18 Jahren

Noch eine Frage to "tee". Gibt es eine Möglichkeit, auch stderr umzuleiten. Ich habe bei meinem Proggi gerade Bildschirmausgang und Datei verglichen und es fehlen Teile, die wahrscheinlich in stderr umgeleitet werden. Ich bin aber am gesamten Inhalt interessiert....
Gibt es dafür eine Lösung?

Vielen Dank
Christof

49.485 Beiträge seit 2005
vor 18 Jahren

Hallo christof.k,

cmd /k pcli 2>&1 | tee datei

Mit 2> wird stderr umgelenkt und mit &1 auf stdout vereint.

herbivore

C
christof.k Themenstarter:in
159 Beiträge seit 2005
vor 18 Jahren

Super, dass mit dem 2>&1 ist ja suppi. Damit bin ich am Ziel meiner Träume!!

Vielen Dank!!!

Christof