mikrocontroller.net

Forum: PC-Programmierung c# rückgabe vom commandozeil


Autor: Praktikant (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

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

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

C:\Users\...>ping 127.0.0.1

Ping wird ausgeführt für 127.0.0.1 mit 32 Bytes Daten:
Antwort von 127.0.0.1: Bytes=32 Zeit<1ms TTL=128
Antwort von 127.0.0.1: Bytes=32 Zeit<1ms TTL=128
Antwort von 127.0.0.1: Bytes=32 Zeit<1ms TTL=128
Antwort von 127.0.0.1: Bytes=32 Zeit<1ms TTL=128

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

C:\Users\...>


Wie kann ich diesen Text nun auch im C# als string erhalten?
Ich habe es mit
var retval = Process.Start(path, command); 
versucht, aber in retval finde ich nichts was dem erwarteten returnvalue 
entspricht :-(

Autor: Peter II (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Praktikant schrieb:
> versucht, aber in retval finde ich nichts was dem erwarteten returnvalue
> entspricht :-(
siehe:

https://msdn.microsoft.com/de-de/library/system.di...

Autor: Peter II (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sorry, falscher link - hier der hilfreichere

https://msdn.microsoft.com/de-de/library/system.di...

Autor: Peter II (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nachtrag:

in ping kann man auch direkt in C# machen, dafür musst du kein Ping 
aufrufen.

https://msdn.microsoft.com/de-de/library/system.ne...

Autor: Rufus Τ. F. (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Praktikant (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo und danke für Eure Hilfe! - Der entscheidende Tipp war die 
Umleitung des StandardOutputs.

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

string command;
command = "showvminfo ";
command += tbVMname.Text;

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

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

p.WaitForExit();
p.Close();

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.