Batch-Code in AutoIt

  • Hallo Leute,

    ich habe mir ein kleines GUI gebaut, mit dem ich verschiedene Funktionen aufrufen möchte,
    die ich bisher über mehrere Batch-Files aufrufe.

    Ich möchte gerne, das die Verschiedenen Batches durch druck auf den entsprechenden Button
    ausgeführt werden.

    Spoiler anzeigen
    [autoit]


    #cs ----------------------------------------------------------------------------

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

    AutoIt Version: 3.3.6.1
    Author: myName

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

    Script Function:
    Template AutoIt script.

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

    #ce ----------------------------------------------------------------------------

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

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Kontrollcenter", 251, 163, 192, 124)
    $Button1 = GUICtrlCreateButton("PW", 136, 120, 105, 33)
    $Button2 = GUICtrlCreateButton("TC1", 8, 40, 105, 33)
    $Button3 = GUICtrlCreateButton("TC2", 8, 80, 105, 33)
    $Button4 = GUICtrlCreateButton("TC3", 8, 120, 105, 33)
    $Button5 = GUICtrlCreateButton("Away", 136, 40, 105, 33)
    $Button6 = GUICtrlCreateButton("RE", 136, 80, 105, 33)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()

    Switch $nMsg

    Case $GUI_EVENT_CLOSE
    Exit

    Case $Button1
    Run(@ComSpec & " /c " & '"O:\Programme\Keepass2.15\KeePass.exe" "O:\Privat\745 386 428" -keyfile:O:\Privat\key.key', "")


    EndSwitch


    WEnd

    [/autoit]

    Bei Druck auf entsprechenden Button blinkt ein cmd-fenster kurz auf verschwindet dann wieder.
    Passieren tut weiter nichts.

    Passieren sollte: Keypass-datenbank öffnet sich :)

    Gruß Kyze.

  • also wenn er die datei nicht finden kann, dann geht es sofort wieder zu, was du mal probieren kannst ist ein pause einfügen und dann die meldung im cmd anschauen, vll stimmt was mit dem pfad nicht...

    Run(@ComSpec & " /c " & '"O:\Programme\Keepass2.15\KeePass.exe" "O:\Privat\745 386 428" -keyfile:O:\Privat\key.key &pause', "")

    also einfach ein &pause hinten dran setzen dann bleibt das fenster aktiv bis du eine taste drückst

  • tatsächlich: als fehler kommt folgendes.

    Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung
    ist falsch.

    Die Pfade sind allerdings komplett angegeben, oder hängt es evtl mit dem @comspec zusammen?

  • ne @comspec ist nur eine umgebungsvariable die zur cmd.exe führt, es muss an deinem string liegen, versuch doch mal den zu kopieren und in einer normalen cmd auszuführen, theoretischerweise müsste es die selbe fehlermeldung bringen

  • Das ist es ja was mich so wundert.

    Ich benutze nämlich den EXAKT gleichen Code schon in einer Batch, diese Funktioniert auch.
    Sowohl aus der Batch als auch wenn ich den so in ein neues CMD-Fenster einfüge.

  • hm also ich kann kein fehler an autoit entdecken, wenn ich eine txt datei öffne funktioniert das über dein script

  • Du willst ne Keepass Datei automatisch öffnen oder?
    Bei mir gehts so:

    [autoit]

    ShellExecute('C:\Programme\KeePass Password Safe\KeePass.exe', 'C:\Database -keyfile:C:\test.txt')

    [/autoit]

    Man braucht nicht den umständlichen weg über die cmd^^

  • Danke Schnitzel, so funktioniert es bei mir nun auch :)

    Allerdings habe ich noch einige andere Batches, die auf den anderen Buttons ausgeführt werden sollen.

    Habe diese leider grade nicht greifbar und kann sie erst nachher weiterhin ausprobieren.
    Dabei sind auch einige von TrueCrypt, zum Mounten von einigen Containern.
    Ob es bei denen das gleiche Problem gibt kann ich euch dann nachher sagen, wenn ich wieder
    in reichweite meiner Batches bin.

    Vielen dank bis hierher, man sieht sich nachher ;)
    Gruß Kyze.

  • Solange man keine typischen Dosbefehle braucht, braucht man auch kein @ComSpec,
    dann klappt auch run, shellexecute etc. wunderbar.

    Achtung Anfänger! :whistling:

    Betrachten des Quellcodes auf eigene Gefahr, bei Übelkeit,Erbrechen,Kopfschmerzen übernehme ich keine Haftung. 8o