WinGetText in Cmd.exe

  • Hallo,

    ich habe folgendes Problem mit minem Script:
    ich tätige mit meinem AutoIt Scrit erst einig eingaben in der Cmd.exe. Zu letzt soll die letzte Zeile ausgelesen werden.

    Leider funktioniert das so nicht

    [autoit]


    $revision = WinGetText ( "C:\WINDOWS\system32\cmd.exe", "" )
    MsgBox ( 1, "test", $revision )

    [/autoit]


    Mit dem AutoIt - Tool Window Info wird auch kein Text angezeigt. Gibt es eine Möglichkeit den text auszlesen?

    MfG

    filewalker

  • Danke für die schnelle Antwort!

    Kannte die Funktion noch nicht.

    Habe es jetzt auf verschiedene Arten probiert, bekomme es aber einfach nicht hin:

    [autoit]


    $shell = run ( "cmd.exe" , "@SystemDir/system32" )
    ShellExecute ( "cmd.exe" , "@SystemDir/system32" )
    WinWaitActive ( "C:\WINDOWS\system32\cmd.exe" )

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

    While 1
    $line = StdoutRead($shell)
    If @error Then
    MsgBox ( 0, "error", "error" )
    ExitLoop
    EndIf
    MsgBox(0, "STDOUT read:", $line)
    Wend

    [/autoit]

    oder

    [autoit]


    $shell = ShellExecute ( "cmd.exe" , "@SystemDir/system32" )
    While 1
    $line = StdoutRead($shell)
    If @error Then
    MsgBox ( 0, "error", "error" )
    ExitLoop
    EndIf
    MsgBox(0, "STDOUT read:", $line)
    Wend

    [/autoit]
  • erstmal danke für deine Hilfe..

    ich bin anfänger und habe daher ncoh einige probleme mit den autoit befehlen.

    Jetzt bekomm ich eine ausgbe, aber eine völlig falsche.

    Mein script sieht (gekürzt) so aus

    [autoit]


    #include <Constants.au3>

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

    Local $shell = Run(@ComSpec & " /c dir foo.bar", @SystemDir, @SW_show, $STDERR_CHILD + $STDOUT_CHILD)

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

    ShellExecute ( "cmd.exe" , "@SystemDir/system32" ) ; da weiß ic nciht ob das bleiben muss oder weg kann, ändert aber am verhalten nix

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

    WinWaitActive ( "C:\WINDOWS\system32\cmd.exe" )
    send ( "git pull" & "{enter}" )
    sleep (2000)

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

    While 1
    $line = StdoutRead($shell)
    If @error Then
    ExitLoop
    EndIf
    MsgBox(0, "STDOUT read:", $line)
    Wend

    [/autoit]

    dabei erscheint bei mr folgendes Fenster:

    Titel : STDOUT read: ( so wie es sein soll)

    text: Volume in Laufwerk C: hat keine Bezeichnung

    Volumseriennummer: ********

    Verzeichnis von C:\WINDOWS\system32

    • Offizieller Beitrag

    Im Hilfe-Beispiel steht dir foo.bar, das mußt du natürlich mit deinem Aufruf ersetzen.
    Und ich vermute, du hast noch nicht verstanden, was mit der Codezeile

    [autoit]

    Run(@ComSpec & " /c BEFEHL", @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)

    [/autoit]

    bewirkt wird - Du bist dann bereits in der Kommandozeile, ein Aufruf der cmd.exe ist also Quatsch.
    Ebenso das WinWait - total überflüssig.
    Und Befehle werden nicht mit Send an das cmd-Fenster übertragen, sondern mit StdinWrite.

    Nutze doch erstmal das Hilfebsp., damit du verstehst, was passiert. Dann kannst du Parameter verändern, nach deinem Geschmack.

  • danke.. jetzt geht das auch!

    nur wie kann ich dem fenster sagen, dass es sich nciht gleich wieder schließt, weil sonst kann ich keine befehle eingeben.

    Hab schon das @SW_Hide in @SW_Show geändert.