Programm zeitgesteuert öffnen

  • Hallo zusammen,

    vielleicht für Euch eine alte Kamelle, aber wie kann ich ein Programm zeitgesteuert ausführen lassen. Die "run" Funktion ist kein Problem, aber kann ich hierzu auch die Zeit hinzufügen, wann das Programm gestartet werden soll?

    Danke für Eure Hilfe

    Sven

    Einmal editiert, zuletzt von seiwa (9. Dezember 2007 um 10:49)

  • Reicht dir das?

    [autoit]


    $stunde = 15 ;Stunde
    $minute = 00 ;Minute
    $tag = 8 ;Tag (im Monat)
    $monat = 12 ;Monat
    $jahr = 2007 ;Jahr

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

    While 1 ;Starte eine unendliche Schleife
    If @HOUR = $stunde AND @MIN = $minute AND @MDAY = $tag AND @MON = $monat AND @YEAR = $jahr Then ;Wenn Stunde, Minute, Tag, Monat und Jahr passen...
    Run("musterdatei.exe") ;...starte musterdatei.exe...
    exit ;...und schließe das Programm
    Else ;Wenns nicht passt...
    sleep(900) ;...warte 900 ms (1/900 Minute)
    EndIf ;Ende der Abfrage
    WEnd ;Beende die Unendliche Schleife

    [/autoit]

    Hab's nicht getestet aber vielleicht gehts ja
    ^^

  • warum das rad neu erfinden?

    mach in windows einfach einen neuen task zu deiner gewünschten zeit!

  • Wie würde das Sript aussehen, wenn ich das Programm täglich um 20:00 Uhr ausführen möchte? Ich könnte das schon mit einem Task bewältigen, aber wenn durch die loakle Richtlinie die Task-Funktion ausgeschaltet ist, und der Rechner gebootet wird, möchte ich gerne ein Script im Autostart hinterlegen.

    Gruß

    Sven

  • ich würde es so machen: ;)

    [autoit]

    while 1
    Select
    Case _Time() = "20:00:00"
    _starten()
    EndSelect
    sleep(50)
    WEnd

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

    Func _Time()
    return @hour & ":" & @min & ":" & @sec
    EndFunc ;==>_Time

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

    Func _starten()
    run(bla.exe)
    EndFunc ;==>_starten

    [/autoit]
  • das problem hierbei ist, das das script mehrmals in einer sekunde durchlaufen wird, und so das programm auch mehrmals aufgerufen wird ;)


    ein kleines sleep(1000) nach dem aufruf einfügen dann klappts auch mit den nachbarn! .... aber die ganze zeit ein script laufen lassen - also ich weiß au ned :)

    Einmal editiert, zuletzt von oliverh (7. Dezember 2007 um 19:54)

  • Hallo!

    hab ja auch solche Probleme:

    Dienst Programmieren (das ist unterm Strich ne Endlosschleife), der ne INI-Datei auslist und dadrin steht, wann das programm ausgeführt werden soll. (in der Registry kannst Du dann vermerken, ob das z.B. heute schon ausgeführt wurde, dann wird halt nicht zum zwoten mal ausgeführt).

    Mit geplanten Tasks gibts sehr of Probleme (hab ja nur ca. 800 Kunden zu betreuen).

    Was soll das Teil tun (damit mein ich, wie wichtig ist das 20:00:00 oder darfs auch 20:00:35 Uhr sein, was ist auf der Kiste um diese Zeit los, in welcher Zeit muß das aufgerufene Programm durchlaufen, sollen da hunderte von Dateien kopiert werden)????

    Gib uns mal mehr Futter, dann wird die Antwort besser.

    Grüße

    German

  • Diese Lösung sollte fast alle Fälle abdecken, nur mit datum geht es nicht und nach einem Neustart des Scripts gibt die Funktion wieder 1 zurück
    Bsp:

    [autoit]

    Do
    If @error then ExitLoop
    Sleep(100)
    Until _Zeitstart("19:40:00","21:53:00")
    MsgBox("0,"Zeitstart","")

    [/autoit]
    Spoiler anzeigen
    [autoit]

    #include <Date.au3>

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

    ;===============================================================================
    ;
    ; Function Name: _ResetZeitstart()
    ; Description:: Resets the day vaiable, so that it can be run again this day, not needed after script restart
    ; Parameter(s): ---
    ; Requirement(s): ---
    ; Return Value(s): ---
    ; Author(s): Prog@ndy
    ;
    ;===============================================================================
    ;

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

    Func _ResetZeitstart()
    If IsDeclared("GLBL_STARTED_DAY") Then $GLBL_STARTED_DAY = 0
    EndFunc

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

    ;===============================================================================
    ;
    ; Function Name: _Zeitstart()
    ; Description::
    ; Parameter(s):
    ; $TimeBegin -> Time at which the Function should return 1 can be HH or HH:MM or HH:MM:SS
    ; $TimeEnd -> If it is given correctly ( TimeStart and TimeEnd must be HH:MM:SS ), this is the end time
    ; The function returns 1 only once a day until _ResetZeitstart() is called or the script is restarted
    ; Requirement(s):
    ; Return Value(s): returns 1 if the actual Time is
    ; a) the Time given in TimeBegin
    ; b) between TimeBegin and TimeEnd (if TimeEnd is given)
    ; @error is set to
    ; 1 if timeEnd isn't "" (Empty string) or HH:MM:SS
    ; 2 if _Zeitstart already returned 1 today
    ; 3 if TimeBegin is empty or not HH:MM:SS
    ; Author(s): Prog@ndy
    ;
    ;===============================================================================
    ;

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

    Func _Zeitstart($TimeBegin,$TimeEnd = "")
    $time = _NowCalc()
    If Not IsDeclared("GLBL_STARTED_DAY") Then Global $GLBL_STARTED_DAY
    If $GLBL_STARTED_DAY = @MDAY Then
    SetError(2)
    Return 0
    EndIf
    If $TimeBegin = "" Or Not StringRegExp($TimeBegin,"\A\d\d(:\d\d){0,2}\z") Then
    SetError(3)
    Return 0
    EndIf
    If $TimeEnd <> "" And StringRegExp($TimeEnd,"\A\d\d:\d\d:\d\d\z") Then

    If _DateDiff( 's',@YEAR &"/"& @MON&"/"&@MDAY &" "& $TimeBegin,$time) >= 0 And _DateDiff( 's',@YEAR &"/"& @MON&"/"&@MDAY &" "& $TimeEnd,$time) <= 0 Then
    $GLBL_STARTED_DAY = @MDAY
    Return 1
    Else
    Return 0
    EndIf

    ElseIf $TimeEnd = "" Then
    $arTime = StringSplit($TimeBegin,":")
    If $arTime[1] = @HOUR Then
    If $arTime[0] >= 2 Then
    If $arTime[2] = @MIN Then
    If $arTime[0] = 3 Then
    If $arTime[3] = @SEC Then
    $GLBL_STARTED_DAY = @MDAY
    Return 1 ;Sekunden gleich
    Else
    Return 0 ; Sekunden ungleich
    EndIf
    Else
    $GLBL_STARTED_DAY = @MDAY
    Return 1 ; Minuten gleich, keine Sekunden da
    EndIf
    Else
    Return 0 ; Minuten ungleich
    EndIf
    Else
    $GLBL_STARTED_DAY = @MDAY
    Return 1 ; Stunden gleich, keine Minuten da
    EndIf
    Else
    Return 0 ; Stunden ungleich
    EndIf

    Else
    SetError(1)
    Return 0
    EndIf

    EndFunc

    [/autoit]

    Einmal editiert, zuletzt von progandy (9. Dezember 2007 um 15:52)