CLI Parameter auslesen

  • Hallo,
    ich habe folgende Frage:

    Wie kann ich aus einem CLI das ich zuvor mit RunWait gestartet habe etwas auslesen?
    Der Parameter den ich auslesen möchte erscheint jedoch erst kurz bevor das Programm (CLI) beendet wird!

    Danke.

    Sonyman

  • Du musst Run statt RunWait verwenden ;)

    Spoiler anzeigen
    [autoit]

    $iPID = Run("...", "...", @SW_HIDE, 0x8) ; 0x8 = $STDERR_MERGED
    $sAusgabe=''
    Do
    $sAusgabe &= StdoutRead($iPID)
    Until @error
    StdioClose($iPID)
    If ProcessExists($iPID) Then ProcessWaitClose($iPID)

    [/autoit] [autoit][/autoit] [autoit]

    MsgBox(0, '', $sAusgabe)

    [/autoit]
  • Ich hab dir doch Beispielcode im Spoiler gepostet. Den Parameter musst du nur noch selbst mit String-Funktionen aus $sAusgabe rausfinden.

  • Sorry,
    hatte ich übersehen!

    Muß ich noch die Zeile und die Stelle angeben, wo der Parameter im CLI angezeigt wird?
    Da meine Parameter nur "1 stellig" ist sprich "X" Done
    "E" Error
    ist, kann es mit Sicherheit vorkommen das im CLI Text mehr als ein "E" bzw "X" angezeigt wird.

    Plan ist, bei "X" wird (AutoIT) Programm weiter abgearbeitet bei "E" MsgBox (Fehler..)

    Danke!

    Gruß
    Sonyman

  • Ich kenne die Ausgabe des programms nicht, also weiß ich jetzt nicht, wie man die Stelle rausfiltern kann. Eventuell steht der Buchstabe an einer bestimmten Stele vom Ende her oder nac oder vor einem bestimmten Text, ... daran kann man es dann festmachen. Poste doch mal eine Beispielausgabe.

  • Der gesuchte Parameter ist immer
    das letzte Zeichen vor dem Curser.

    Habe das CLI auf einer anderen Kiste.
    Poste Morgen ein Foto!

    Danke

    Gruß
    Sonyman

  • Dann könnte folgendes funktionieren:

    [autoit]

    Switch StringRight($sAusgabe, 1)
    Case 'X'
    ; X
    Case 'E'
    ; E
    EndSwitch

    [/autoit]
  • Hallo progandy,
    Danke für die schnelle Antwort.

    Kann ich das einfach unter den Aufruf Run... kopieren?

    [autoit]

    Run("load.exe --comport="&$comport&" --comspeed=9600 --drive="&$drive&" --command=V::5:2 --command=C:X:30:2:E") ;Calibrieren der Robotic
    Switch StringRight($sAusgabe, 1)
    Case 'X'
    ; X
    Case 'E'
    ; E
    EndSwitch

    [/autoit][autoit][/autoit][autoit][/autoit]

    Bleibt die Abfrage solange aktiv bis ein "X" oder ein "E" kommt?

    Das CLI gibt notify return Code aus damit lässt sich mit Sicherheit auch die Abfrage realisieren.
    Aber nur wenn man sich damit auskennt!
    8|

    DANKE!

    Gruß
    Sonyman

  • Du solltest vielleicht einmal die AutoIt-Hilfe lesen.

    Hier ein Tip: StdOutRead

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"