Kommandozeilenanwendung

  • hallo ich wieder^^

    weiß einer von euch wie man in autoit eine Kommandozeilenanwendung schreibt?
    weil in allen anderen programmiersprachen fängt man damit an nur in autoit steigt man gleich direkt in die "Klicki-Bunti-Fenster" ein^^
    ich find die Kommandozeilendinger irgendwie praktischer

    Kann mir wer helfen?

    Padmak

    • Offizieller Beitrag

    Kann mir wer helfen?


    Aber immer :D
    Damit du ein Programm per Kommandozeile steuern kannst, mußt du die entsprechenden Parameter beim Aufruf übergeben. AutoIt hält dafür die Variable $CmdLine bereit. Schau in der Hilfe unter diesem Begriff nach, ist gut dargestellt.
    Oder gib einfach in SciTe cmdlineselect und Leerzeichen ein. Dann wird dir gleich ein vorgefertigter Skriptteil eingefügt.

    • Offizieller Beitrag

    Kompiliere einfach mal folgendes Bsp. und rufe dann mit den einzelnen Parametern auf.
    Es erscheint eine MsgBox, die anzeigt mit welchem Parameter aufgerufen wurde.

    Spoiler anzeigen
    [autoit]

    #region - CmdlineSelect
    If $CMDLINE[0] Then
    For $i = 1 To $CMDLINE[0]
    Select
    Case $CMDLINE[$i] = '/?'
    MsgBox(0x40000, @ScriptName & ' Help', _
    'Switches are:' & @CRLF _
    & @CRLF & '/a' _
    & @CRLF & @TAB & 'Skript für Parameter /a' _
    & @CRLF & '/b' _
    & @CRLF & @TAB & 'Skript für Parameter /b' _
    & @CRLF & '/c' _
    & @CRLF & @TAB & 'Skript für Parameter /c'
    Exit
    Case $CMDLINE[$i] = '/a'
    _skript('a')
    Case $CMDLINE[$i] = '/b'
    _skript('b')
    Case $CMDLINE[$i] = '/c'
    _skript('c')
    Case Else
    MsgBox(0x40000, 'Incorrect switch used', _
    'Command used:' & @CRLF & $CMDLINERAW & @CRLF & _
    @CRLF & 'Use /? for the switches available.')
    Exit
    EndSelect
    Next
    EndIf
    #endregion

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

    Func _skript($Param)
    Switch $Param
    Case 'a'
    MsgBox(0, '', 'An das Skript wurde Parameter /a übergeben.')
    Case 'b'
    MsgBox(0, '', 'An das Skript wurde Parameter /b übergeben.')
    Case 'c'
    MsgBox(0, '', 'An das Skript wurde Parameter /c übergeben.')
    EndSwitch
    EndFunc

    [/autoit]
  • aah^^ *lichtleinaufgeh*
    und wie mach ich das jetzt dass ich z.B. eine sleep.exe habe wo dann per cmd die sleep.exe so aufgerufen wird:

    Code
    sleep /t 1000


    1000 halt die millisekunden

    wie funzt das?
    *hilfe*^^
    vielleicht kannst du mir da helfen

    Padmak

  • [autoit]

    For $i = 1 to $CMDLINE[0]
    If $CMDLINE[$i] = "/t" And $CMDLINE[0] > $i Then
    sleep($CMDLINE[$i + 1])
    MsgBox(0, "Tada", "Nun habe ich " & $CMDLINE[$i + 1] & " ms gewartet.")
    EndIF
    Next

    [/autoit]


    Eine Schleife machen in der alle Parameter geprüft werden ob er "/t" heißt. Wenn ja, dann soll er gleich mit prüfen ob nach "/t" noch ein Parameter kommt (die Millisekunden). Dann soll er sleepen ^^

  • Hallo

    BugFix
    Habe versucht Dein Script zu testen, aber es kam eine Fehlermeldung für Zeile 13.

    Habe dann bisschen rum gespielt mit dem was hier schon stand und raus gekommen folgendes, was bei mir funktioniert.

    Spoiler anzeigen
    [autoit]

    #region - CmdlineSelect
    If $CMDLINE[0] Then
    For $i = 1 To $CMDLINE[0]
    Select
    Case $CMDLINE[$i] = '/?'
    MsgBox(0x40000, @ScriptName & ' Help', _
    'Switches are:' & @CRLF _
    & @CRLF & '/extract' _
    & @CRLF & @TAB & 'Extract files to current directory' _
    & @CRLF & '/a' _
    & @CRLF & @TAB & '' _
    & @CRLF & '/b' _
    & @CRLF & @TAB & '' _
    & @CRLF & '/c' _
    & @CRLF & @TAB & '' _
    & @CRLF & '/d' _
    & @CRLF & @TAB & '')
    Exit
    Case $CMDLINE[$i] = '/extract'
    _skript('extract')
    Exit
    Case $CMDLINE[$i] = '/a'
    _skript('a')
    Case $CMDLINE[$i] = '/b'
    _skript('b')
    Case $CMDLINE[$i] = '/c'
    _skript('c')
    Case $CMDLINE[$i] = '/d'
    _skript('a')
    Case Else
    MsgBox(0x40000, 'Incorrect switch used', _
    'Command used:' & @CRLF & $CMDLINERAW & @CRLF & _
    @CRLF & 'Use /? for the switches available.')
    Exit
    EndSelect
    Next
    EndIf
    #endregion

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

    Func _skript($Param)
    Switch $Param
    Case 'extract'
    FileInstall('bsp.exe', @ScriptDir & '\')
    MsgBox(0, '', 'Datei bsp.exe wurde installiert.')
    Case 'a'
    MsgBox(0, '', 'An das Skript wurde Parameter /a übergeben.')
    Case 'b'
    MsgBox(0, '', 'An das Skript wurde Parameter /b übergeben.')
    Case 'c'
    MsgBox(0, '', 'An das Skript wurde Parameter /c übergeben.')
    EndSwitch
    EndFunc

    [/autoit]

    Jetzt frage ich mich, wieso das von Dir nicht funktionierte ???!!!???

    Edit: Fehlermeldung:

    Spoiler anzeigen
    [autoit]


    C:\Dokumente und Einstellungen\AlinaLaptop\Desktop\test.au3(13,68) : ERROR: syntax error
    & @CRLF & @TAB & 'Skript für Parameter /c'
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    C:\Dokumente und Einstellungen\AlinaLaptop\Desktop\test.au3 - 1 error(s), 0 warning(s)

    [/autoit]

    LG,
    Lina.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

    Einmal editiert, zuletzt von Alina (3. Januar 2009 um 22:33)