tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
1
ZUGRIFFE
883
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von XtremeCJ
    XtremeCJ XtremeCJ ist offline Mitglied Gold
    Registriert seit
    Feb 2006
    Beiträge
    105
    Ich schreibe mir gerade ein kleines Tool, um den kompletten Inhalt des aktuellen Ordners gezippt auf einen FTP zu laden. Das passiert so:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
    StringBuilder builder = new StringBuilder();
    builder.AppendLine("open " + ftp);
    builder.AppendLine(user);
    builder.AppendLine(password);
    builder.AppendLine("binary");
    builder.AppendLine("mput \"" + zipFileName + "\"");
    builder.AppendLine("close");
    builder.AppendLine("bye");
     
    File.WriteAllText(commandFileName, builder.ToString());
     
    Process p = Process.Start("ftp.exe", "-v -i -s:" + commandFileName);
    while (Process.GetProcessesByName("ftp").Length > 0) // nicht gut, es könnten ja mehrere FTP-Prozesse laufen
        Thread.Sleep(500); // wait for transaction process to end

    Es wird einfach ein TXT mit den Anweisungen erstellt, der Prozess mit dem TXT als Argument gestartet, und gewartet bis der Prozess fertig ist.

    Ich möchte anschließend prüfen, ob der Vorgang erfolgreich war. Gibt es eine Möglichkeit, das Ergebnis des FTP-Prozesses auszulesen?

    Außerdem habe ich noch einen Kommentar an der Stelle gemacht wo ich nicht zufrieden bin. Das ist an der Stelle wo ich prüf ob der FTP-Prozess noch läuft. Wenn zufällig nebenher noch ein anderer FTP-Prozess läuft, wird das hier nicht so schnell fertig. Gibt es eine Möglichkeit zu prüfen, ob der spezielle Prozess p abgeschlossen ist?
    Geändert von XtremeCJ (07.10.09 um 00:12 Uhr)
     

  2. #2
    Avatar von XtremeCJ
    XtremeCJ XtremeCJ ist offline Mitglied Gold
    Registriert seit
    Feb 2006
    Beiträge
    105
    Lösung:

    Über ein ProcessStartInfo kann die Rückgbae eines solchen Prozesses ausgelesen werden. Mit Prozess.StandardOutput.ReadToEnd wird dieses Ergebnis ausgelesen, nachdem im zugehörigen ProcessStartInfo das Flag "RedirectStandardOutput" auf "true" gesetzt wurde.

    In meinem Fall sieht es jetzt so aus:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
    ProcessStartInfo processStartInfo = new ProcessStartInfo("ftp", "-v -i -s:" + commandFileName);
    processStartInfo.RedirectStandardOutput = true;
    processStartInfo.CreateNoWindow = true;
    processStartInfo.UseShellExecute = false;
    Process p = new Process();
    p.StartInfo = processStartInfo;
    p.Start();
    string result = p.StandardOutput.ReadToEnd();

    Thema erledigt sollte jemand von euch einen Simon Widmaier kennen, dann huldigt ihm ;D er is wie google auf 2 Beinen, nur findet man da schneller bessere Lösungen 8D
     

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 28.09.10, 02:43
  2. Abfragen ob Prozess läuft
    Von aKraus im Forum Linux & Unix
    Antworten: 1
    Letzter Beitrag: 26.06.08, 13:24
  3. Prüfen ob Prozess läuft
    Von Gamer123 im Forum C/C++
    Antworten: 1
    Letzter Beitrag: 15.04.08, 15:30
  4. Prüfen ob Prozess besteht
    Von Kidix im Forum Linux & Unix
    Antworten: 1
    Letzter Beitrag: 13.06.05, 12:34
  5. Überpüfen ob Prozess läuft
    Von phi_2k im Forum C/C++
    Antworten: 21
    Letzter Beitrag: 15.07.04, 11:37