Code in Konsole ausführen (Special)

  • Guten Morgen.

    Ihr habt sicher nun gedacht, ihr könntet mich mit einem _RunDos abspeisen - sorry, aber so einfach ist mein Problem nicht ;)

    Ich habe aktuell die rar.exe, also die Kommandozeilendatei von WinRar.exe .
    Ich möchte per Skript nun Archive entpacken lassen, was per _RunDos auch gut funktioniert.

    Nun habe ich mir aber überlegt, dass eine Fortschrittsanzeige angebracht wäre ;)

    Wenn ich meinen bisherigen Befehl zum Entpacken (abgespeckt) -

    [autoit]

    $query = "rar.exe e -hp" & $split[8] & " -y """ & $toprep & """ """ & $toprep2 & """ >""" & @TempDir & "\unrar.log"""
    _RunDOS($query)

    [/autoit]

    - verwende, und dann versuche, auf die unrar.log zuzugreifen, passiert dies erst, nachdem die Datei fertig entpackt wurde.

    Das bringt mir natürlich nichts, da zu dem Zeitpunkt das Entpacken bereits abgeschlossen ist.

    Was ich also benötige ist ein Weg, per Kommandozeile die rar.exe aufzurufen, und dort live aus der Konsole meine Informationen zu bekommen.

    Dankeschön,
    Dankeschön

    P.S.: cmd.exe fernsteuern ist sehr ... eklig, es wäre also gut, wenn ihr einen Trick ohne diese Technik kennt ;)

    Zitat

    Programmieren ist so lange lustig bis ein Fehler auftritt!


    ~ Dankeschön

    Einmal editiert, zuletzt von Dankeschön (6. Februar 2011 um 11:48)

    • Offizieller Beitrag

    Hallo

    Guck dir mal Run in der Hilfe an, da gibt es den paramenter STDOUT etc.
    Dann
    While ProcessExists($pid) ;$pid kommt vom run
    und in der Schleife dann mit STDOutRead die daten auslesen ;)

    Gruß
    Spider

    Edit:
    Hier:

    [autoit]

    $query = "rar.exe e -hp" & $split[8] & " -y """ & $toprep & """ """ & $toprep2
    $pid = Run('"' & @ComSpec & '" /c '&$query, '', @SW_HIDE,2+4)

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

    While ProcessExists($pid)
    $sRead = StdoutRead($pid)
    $sRead &= StderrRead($pid)
    If $sRead <> '' Then
    ConsoleWrite("rar.exe: "&$sRead & @CRLF)
    EndIf
    WEnd

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