c# rückgabe vom commandozeil

Gast #5020351
Hi,
ich starte mit c# ein kommandozeilenprogramm.
Wenn ich dieses Konsolenprogramm nicht mit meinem C#-Programm sondern 
mit der Win7-Konsole (cmd) ausführe, sehe ich in der Konsole einen 
Rüggabewerte. Wie bekomme ich dieses Rückgabewert mun in mein 
C#-Programm?

1
C#
2
string command = "127.0.0.1";
3
string path = "C:\Windows\SysWOW64\ping.exe";
4
Process.Start(path, command);

in der Konsole sehe ich nach ausführen des pings das hier:
1
Microsoft Windows [Version 6.1.7601]
2
Copyright (c) 2009 Microsoft Corporation. Alle Rechte vorbehalten.
3

4
C:\Users\...>ping 127.0.0.1
5

6
Ping wird ausgeführt für 127.0.0.1 mit 32 Bytes Daten:
7
Antwort von 127.0.0.1: Bytes=32 Zeit<1ms TTL=128
8
Antwort von 127.0.0.1: Bytes=32 Zeit<1ms TTL=128
9
Antwort von 127.0.0.1: Bytes=32 Zeit<1ms TTL=128
10
Antwort von 127.0.0.1: Bytes=32 Zeit<1ms TTL=128
11

12
Ping-Statistik für 127.0.0.1:
13
    Pakete: Gesendet = 4, Empfangen = 4, Verloren = 0
14
    (0% Verlust),
15
Ca. Zeitangaben in Millisek.:
16
    Minimum = 0ms, Maximum = 0ms, Mittelwert = 0ms
17

18
C:\Users\...>


Wie kann ich diesen Text nun auch im C# als string erhalten?
Ich habe es mit
1
var retval = Process.Start(path, command);
versucht, aber in retval finde ich nichts was dem erwarteten returnvalue 
entspricht :-(
Persönliche Seite
Praktikant schrieb:
> Wenn ich dieses Konsolenprogramm nicht mit meinem C#-Programm sondern
> mit der Win7-Konsole (cmd) ausführe, sehe ich in der Konsole einen
> Rüggabewerte.

Das ist kein Rückgabewert, das ist der Text, den das aufgerufene 
Programm auf seinem stdout/stderr ausgibt.

Ein Rückgabewert wird in der Konsole nicht angezeigt, der kann nur in 
Batchdateien mit "errorlevel" abgefragt werden.

Du aber willst gar nicht den Rückgabewert haben, Du willst die 
Ein/Ausgabe des Programmes umleiten.
Gast
hallo und danke für Eure Hilfe! - Der entscheidende Tipp war die 
Umleitung des StandardOutputs.

Mit folgendem Code habe ich die Aufgabe gelöste
1
Process p = new Process();
2
p.StartInfo.UseShellExecute = false;
3
p.StartInfo.FileName = "C:\\Program Files\\Oracle\\VirtualBox\\VBoxManage.exe";
4

5
string command;
6
command = "showvminfo ";
7
command += tbVMname.Text;
8

9
p.StartInfo.Arguments = command;
10
p.StartInfo.RedirectStandardOutput = true; // Hier wird der Output umgeleitet!
11
p.Start();
12

13
StreamReader reader = p.StandardOutput;
14
string output = reader.ReadToEnd();
15

16
p.WaitForExit();
17
p.Close();

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.