Befehl ausführen mit Parametern

  • Hallo liebe leute,

    ich habe jetzt einige tage die englische hilfe studiert,
    die mich leider auch nicht mehr weiter bringt in dieser angelegenheit.
    also folgendes ist mein problem:
    ich will ein Komando ausführen (dachte Run() wär gut dafür ^^)
    und der soll eine mysql funktion aufrufen...
    folgendes sollte ausgeführt werden:
    %pfad_zu_mysqldump.exe% --user=%configfile_eintrag% --password=%configfile_eintrag% --port=%configfile_eintrag% --add-drop-table --extended-insert %configfile_eintrag_für_db_angabe% %configfile_eintrag_tables_fürs backup% > %configfile_eintrag_backup_ordner%\SQL_Datei.sql

    (ist natürlich nur so ums mal deutlich zu machen ;) )
    Das ganze soll unsichtbar im hintergrund geschehen


    und btw Send() suckt :P
    (habe vorher eine combo aus dem run() und send() command benutzt,
    was aber erstens die cpu so viel belastet und 2. zu langsam ist XD )


    LG TheJoker89

    3 Mal editiert, zuletzt von TheJoker89 (3. Juni 2007 um 16:26)

  • *) Du willst KEIN kommando machen. (ich will kein Komando ausführen (dachte Run() wär gut dafür ^^) .... versteh den Sinn dan net?


    variablen gehen mit autoit in $text, nicht %text%.


    würde also heißen:


    [autoit]

    $pfad & "--user="& $eintrag & "--password=" & $eintrag & "--port=" $eintrag & "-add-drop-table --extended-insert " & $eintragfuerdbanage& " " $eintragfuersbackup & " > " & $eintragbackupordner & "\SQL_Datei.sql"

    [/autoit]

    (abgesehen davon, deutlich war das net...)


    Was genau über SEND gesnedert werden sollen, geht aber nicht daraus hervor...


    Send ist ausserdem super, es ist sehr schnell (cotrolsend..), und dann ist entweder die CPU schrott oder sonst ein problem, ansonsten mit sleeps die CPU entlasten..

  • lol klingt ganz schön aufmüpfig XD

    das mit %% ist klar ^^ das war nur, weil windows die variablen in der regel so handhabt...dass sie von autoit anders gehandhabt werde war logo für mich ;) und da ihr hier alle die profi progger in autoit seit XDDD dachte ich, dass man sich mit windows auch auskennen müste so!
    XD

    alsodanke nochmal für die hilfe, aber nächstes mal bitte freundlicher ^^


    EDIT: btw. es soll aus einer config mit iniread blablabla gelesen werden ^^

    Einmal editiert, zuletzt von TheJoker89 (3. Juni 2007 um 16:18)

  • moin :D

    1) das mit den %% $ war ein freundlicher hinweis. Wärst nicht der erste gewesen der es mit %test probiert hat..

    2) Du widersprichst dir selber

    3) Aus deinem Thread geht keine eindeutige Frage hervor.

    Eher eine aufforderung, dir das jetzt zu proggen, und da bin ich allergisch dagegen.


    Wegen der Ini schau dir das tutorial an, da hab ich geschrieben wie man mit Iniread arbeitet.

    Mfg

  • ok ok ok ^^
    ich will es absolut selber proggen ^^
    das programm an sich ist sowieso schon fertig,
    aber ich will es verbessern...
    also nochmal: es soll einen befehl ausführen,
    der an eine syntax gebunden ist und statischen text und
    variablen text beinhaltet, was ich bisher mit send
    geregelt habe, was aber recht langsam ist....
    (nein meine cpu ist nicht schrott ^^)
    ich weiß nicht in wiefern du dich damit auskennst,
    aber das emulieren von tasten kann nicht so lange dauern,
    wie bei autoit die send funktion dafür benötigt...
    außerdem ist es nur eine unsaubere methode um mein programm
    zum laufen zu bekommen...


    EDIT:
    so habe ich mit eine funktion zusammengeschrieben:

    [autoit]


    Run(@ComSpec & " /c " & 'start "MySQL Command"')
    WinActivate("MySQL Command")
    Send(IniRead("config.ini", "config", "mysqldump", "xampplite\mysql\bin\mysqldump.exe"))
    Send(" --user=")
    Send(IniRead("config.ini", "config", "username", "thejoker"))
    Send(" --password=")
    Send(IniRead("config.ini", "config", "password", "xxxxx"))
    Send(" --port=")
    Send(IniRead("config.ini", "config", "port", "3306"))
    Send(" --add-drop-table --extended-insert ")
    Send(IniRead ( "config.ini", "config", "datenbank", "jokersdaten" ))
    Send(" tables > ")
    Send(IniRead("config.ini", "config", "backupfolder", "backups"))
    Send("\SQL_Backup.sql{enter}")
    Send("exit{enter}")

    [/autoit]


    und ich wollte diesen vorgang ein wenig beschleunigen,
    um das programm efiizienter zu machen...

    2 Mal editiert, zuletzt von TheJoker89 (3. Juni 2007 um 16:37)

  • Zitat

    Original von peethebee
    Hi!

    @huggy:
    Mach mal bisschen langsam bitte.

    Danke,
    peethebee

    danke für deine unterstützung :D

    aber kann mir irgendwer irgendwie weiterhelfen?

    • Offizieller Beitrag

    Hallo und :willkommen:!

    So sollte es gehen!

    [autoit]

    $szMySQLDump = IniRead("config.ini", "config", "mysqldump", "xampplite\mysql\bin\mysqldump.exe")
    $szMySQLUser = IniRead("config.ini", "config", "username", "thejoker")
    $szMySQLPasswd = IniRead("config.ini", "config", "password", "xxxxx")
    $szMySQLPort = IniRead("config.ini", "config", "port", "3306")
    $szMySQLDB = IniRead ( "config.ini", "config", "datenbank", "jokersdaten")
    $szBackupFolder = IniRead("config.ini", "config", "backupfolder", "backups")

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

    Run(@ComSpec & " /C " & $szMySQLDump & _
    " --user=" & $szMySQLUser & _
    " --password=" & $szMySQLPasswd & _
    " --port=" & $szMySQLPort & _
    " -add-drop-table --extended-insert " & $szMySQLDB & _
    " tables > " & $szBackupFolder & "\SQL_Backup.sql", "", @SW_HIDE)

    [/autoit]
  • Zitat

    Original von TheJoker89

    danke für deine unterstützung :D

    aber kann mir irgendwer irgendwie weiterhelfen?

    [autoit]


    AutoItSetOption("SendKeyDelay", 1)
    AutoItSetOption("SendKeyDownDelay", 1)

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

    Run(@ComSpec & " /c " & 'start "MySQL Command"')
    WinActivate("MySQL Command")
    Send(IniRead("config.ini", "config", "mysqldump", "xampplite\mysql\bin\mysqldump.exe") & " --user=" & IniRead("config.ini", "config", "username", "thejoker") & " --password=" & IniRead("config.ini", "config", "password", "xxxxx") & " --port=" & IniRead("config.ini", "config", "port", "3306") &" --add-drop-table --extended-insert " & IniRead ( "config.ini", "config", "datenbank", "jokersdaten" ) & " tables > " & IniRead("config.ini", "config", "backupfolder", "backups") & "\SQL_Backup.sql")
    Send("{Enter}")
    Send("exit")
    Send("{Enter}")

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

    mfg

  • danke für die hilfe, habe es ausprobiert und meine datei wird sogar angelegt, ist aber leider leer...irgendwas stimmt noch nicht ganz.
    ich probier mal ein wenig ;)

    EDIT: sag mal wofür sind die _ in deinem script? ich meine was bewirken die?

    Einmal editiert, zuletzt von TheJoker89 (3. Juni 2007 um 17:12)

  • damit autoit nicht glaubt, es ist ein neuer befehl. durch _ wird signalisiert, dass es nur ein zeilenumbruch ist, aber kein neuer aufruf :D

  • so in etwa (außer die options änderung) hatte ich das auch ^^
    nur will ich es ohne angezeigtes dos fenster haben
    (auch nicht in der taskbar)

  • Zitat

    Original von BugFix
    '_' am Ende bedeutet Befehsfortsetzung in Folgezeile.

    danke :D


    EDIT: ICH HABS!!!! DANKE @ ALL (war nur ein kleiner schreibfehler :D)

    Einmal editiert, zuletzt von TheJoker89 (3. Juni 2007 um 17:21)

  • @ bugfix: hab ich doch schon geschrieben? oO

    Edit BugFix: Jo klar, aber als du gepostet hast war ich grad am schreiben :D

    Edit Huggy: das sagen sie alle x))

    @joker: nein, nicht das selbe. Es ist 100% n bisschen schneller, es in einem Send zu machen und die SendKeyDelays wurden von 5 ms auf 1 MS (= 1/5) verringert.

    Und das @SW_Hide hab ich vergessen :D :D

    Einmal editiert, zuletzt von huggy (3. Juni 2007 um 19:45)