Script zu bestimmten Termin ausführen

  • Hallo. ich möchte so eine Art Terminplaner erstellen der den weiteren vorgang des scripts zu einer festgelegten zeit ausführt

    z.B: Es ist der 29.05.2009 08:00 dann soll das Programm geöffnet werden
    und dann am 30.05.2009 um 16:00 wieder geschlossen werden.


    Hat jemand eine Idee wie man das umsetzen kann?

  • [autoit]

    while 1
    If @year = 2009 and @mon = 5 and @mday = 29 and @hour = 8 and @min= 0 and @sec = 0 then
    run ("dein.programm")
    If @year = 2009 and @mon = 5 and @mday = 29 and @hour = 8 and @min= 0 and @sec = 0 then
    processclose ("desin.programm")
    exit 0
    endif
    endif
    wend

    [/autoit]

    MfG. tobi_girst

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »tobi_girst« (Morgen, 25:63)

  • schonmal sehr nice. Aber nicht so Benutzerfreundlich weil er muss selber das datum in einer config festlegen.

    dann müsste er immer in einer anderen Zeile

    [Anfang]

    Jahr =

    Monat =

    Tag =

    Stunde=

    Minute =


    und das gleiche nochmal fürs Enddatum T_T

  • Dann mach die Zeit als $variable und nimm Iniread!
    Edit:/

    Spoiler anzeigen
    [autoit='main.au3']

    $anfang1 = IniRead ("zeit.ini", "anfang", "jahr", 2009)
    $anfang2 = IniRead ("zeit.ini", "anfang", "monat", 5)
    $anfang3 = IniRead ("zeit.ini", "anfang", "tag", 29)
    $anfang4 = IniRead ("zeit.ini", "anfang", "stunde", 8)
    $anfang5 = IniRead ("zeit.ini", "anfang", "minute", 0)
    $anfang6 = IniRead ("zeit.ini", "anfang", "sekunde", 0)

    $ende1 = IniRead ("zeit.ini", "ende", "jahr", 2009)
    $ende2 = IniRead ("zeit.ini", "ende", "monat", 5)
    $ende3 = IniRead ("zeit.ini", "ende", "tag", 30)
    $ende4 = IniRead ("zeit.ini", "ende", "stunde", 16)
    $ende5 = IniRead ("zeit.ini", "ende", "minute", 0)
    $ende6 = IniRead ("zeit.ini", "ende", "sekunde", 0)

    while 1
    If $anfang1 and $anfang2 and $anfang3 and $anfang4 and $anfang5 and $anfang6 then
    run ("dein.programm")
    If $ende1 and $ende2 and $ende3 and $ende4 and $ende5 and $ende6 then
    processclose ("dein.programm")
    exit 0
    endif
    endif
    wend

    [/autoit]

    MfG. tobi_girst

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »tobi_girst« (Morgen, 25:63)

    Einmal editiert, zuletzt von tobi_girst (30. Mai 2009 um 15:49)

  • dann kannste ja iniwrite() und iniread() benutzen (weitere informationen dazu in der AutoIT hilfe)
    edit: Verdammt zu langsam ^^

    Wer immer nur das tut, was er bereits kann - wird auch immer nur das bleiben, was er bereits ist!

  • Also so wie "tobi_girst" es gemacht hat würde ich es auch machen.

    Da muß nichts erst in eine Datei geschrieben werden bzw. dann ja auch dort ausgelesen werden, sondeern es wird von der Systemuhr die Zeit genommen.
    Das einzige was ich noch davor machen würden, wäre die Systemzeit mit einem Zeitserver abgleichen, weil sonst kann der anwender die Zeit ja immer zurück stellen und das ist nicht gut.
    Wie man einen Zeitserver abfragt ist im Forum bereits besprochen.

    Zitat peethebee :
    Ofiizielle, gute Zeitserver gibt es von der Physikalisch-Technischen Bundesanstalt - http://www.ptb.de/
    Zitatende

    Lieben Gruß,
    Alina

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

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Naja ihr habt mich nicht ganz verstanden.

    Ich finde es nicht Benutzerfreundlich wenn der Benutzer 5 verschiedene Werte in der config.ini setzen muss.

    Kann man nicht alles zusammen schreiben in eine? ;(

  • hmmm
    ich glaune bin mir aber nicht sicher so kannst du mehrere inis in eine geben müsste so dementsprechend aussehen

    Spoiler anzeigen


    [ Benutzer A ]
    Jahr =

    Monat =

    Tag =

    Stunde=

    Minute =


    [ Benutzer B ]
    Jahr =

    Monat =

    Tag =

    Stunde=

    Minute =


    usw.


    und um es noch benutzer freundlicher zu machen : gibt es ja
    GUICtrlCreateDate und GUICtrlCreateMonthCal

  • $anfang1 = IniRead ("config.ini", "anfang", "stunde", 8)
    $anfang2 = IniRead ("config.ini", "anfang", "minute", 0)
    $ende1 = IniRead ("config.ini", "ende", "stunde", 16)
    $ende2 = IniRead ("config.ini", "ende", "minute", 0)


    das habe ich in meine while true schleife dann gemacht:

    _checkdatum()

    SQL
    func _checkdatum() 
    while 1 
    If $anfang1 and $anfang2 then 
    $runsy = 1 
    If $ende1 and $ende2 then 
    $runsy = 0 
    endif 
    endif 
    wend 
    EndFunc


    [autoit]


    if $runsy = 0 Then
    Exit
    else
    .
    .
    .

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


    Und das ist meine config:

    Code
    [anfang] 
    stunde=8 
    minute=0 
    [ende] 
    stunde=14 
    minute=25


    Und das hier mein Ergebnis:

    funzt nicht :(

  • Hast du die Variablen mit INIREAD)( vorher aus der Ini ausgelesen??

    und ich würde dir raten es so zu machen: