Variable und Cmd-Befehlen verwenden

  • Guten Morgen liebe Community,

    ich habe seid ca. 2 Stunden ein kleines Problem mit dem Befehl: _RunDos
    Ich möchte einen Befehl per CMD ausführen und diesen in einer .txt-Datei speichern.
    Das klappt auch wunderherrlich wenn ich ein festes Ziel angebe.
    Ich möchte aber in der Funktion:

    [autoit]

    _RunDos ("echo ##NEUER TAG## - % DATE% >>C:\Users\*\Arbeits-Info\Arbeitszeiten.txt")
    _RunDos ("echo von %TIME% >>C:\Users\*\Arbeits-Info\Arbeitszeiten.txt")

    [/autoit]


    (das Leerzeichen in der Variable zum Datum ist gewollt, da er mir hier sonst ÙTE anzeigt ;))
    anstelle des * eine Variable einfügen, sodass man einen anderen Speicherort wählen kann.
    Ob ich da eine InputBox, Combobox oder sonst was nehme, soll dabei egal sein, da ich dieses Problem auch in einem anderen Programm habe.

    Hier einmal der komplette Funktionsterm:

    [autoit]

    #include <Process.au3>
    #include <GUIConstantsEx.au3>

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

    GUICreate("Arbeitszeiten", 300, 150)

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

    $Start = GUICtrlCreateButton("Anfang", 10, 115, 90, 30)
    $Stop = GUICtrlCreateButton("Feierabend", 110, 115, 90, 30)
    $Ende = GUICtrlCreateButton("Ende", 230, 115, 50, 30)

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

    GUICtrlCreateLabel ("Dieses Programm dokumentiert ihre Arbeitszeiten.", 10, 10)
    GUICtrlCreateLabel ("Beginnst du deinen Arbeitstag, drücke ""Anfang"".", 10, 35)
    GUICtrlCreateLabel ("Beendest du ihn, drücke ""Feierabend"".", 10, 50)
    GUICtrlCreateLabel ("Das Dokument wird Standardmäßig als .txt-Datei", 10, 65)
    GUICtrlCreateLabel ("auf deinem Desktop gespeichert.", 10, 80)

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

    GUISetState()

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

    Do
    $msg = GUIGetMsg()

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

    Select
    Case $msg= $Start
    _RunDos ("echo ##NEUER TAG## - %DATE% >>C:\Users\*\Arbeits-Info\Arbeitszeiten.txt")
    _RunDos ("echo von %TIME% >>C:\Users\*\Arbeits-Info\Arbeitszeiten.txt")
    Case $msg= $Stop
    _RunDos ("echo bis %TIME% >>C:\Users\*\Arbeits-Info\Arbeitszeiten.txt")
    EndSelect
    Until $msg = $GUI_EVENT_CLOSE or $msg = $Ende

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

    Exit

    [/autoit]

    Vielen Dank schon einmal für die Hilfe

    Einmal editiert, zuletzt von Gabbadome (5. September 2012 um 11:19)

  • #Edit
    Ich weiß, dass man das hier auch über Funktionen ändern kann, jedoch brauche ich die Lösung wie gesagt auch für ein anderes Programm und da sind Funktionen nicht möglich.

  • Du willst also eine Variable aus AutoIt in Batch verwenden?

    [autoit]

    "C:\Users\" & $Var & "\..."

    [/autoit]

    Genau das will ich und deine Lösung wird direkt umgesetzt.
    Danke schon einmal ;)

  • Ist es das was du willst?

    [autoit]

    _RunDos ("echo ##NEUER TAG## - %DATE% >>C:\Users\" & $sVar & "\Arbeits-Info\Arbeitszeiten.txt") ; Wenn $sVar ein String ist
    _RunDos ("echo ##NEUER TAG## - %DATE% >>C:\Users\" & GUICtrlRead($idVar) & "\Arbeits-Info\Arbeitszeiten.txt") ; Wenn $idVar die Control-ID z.B. einer Input-Box ist

    [/autoit]


    Gruss Shadowigor

    EDIT: Mist, zu langsam ;)

  • Habt mir beide sehr geholfen ;)
    Aber ich kann dich beruhigen Shadowigor, genau das hätte ich ohne dein Beitrag jetzt selber rausfinden müssen :p

    MfG Dome