Script von 06:30 Uhr bis 17 Uhr täglich laufen lassen und evtl. am Wochenende nicht

  • Hallo,

    ich habe folgendes Script zusammen gebaut:

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

    While 1

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

    ;--- Zahlungsverkehreingang zuordnen ---

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

    Opt("WinTitleMatchMode", 4)

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

    WinWait("Wawi für xtcModified / http://www.domain.de (V4.5.11)","")
    ControlClick("Wawi für xtcModified / http://www.domain.de (V4.5.11)","","WindowsForms10.BUTTON.app.0.2bf8098_r15_ad11")
    ControlClick("Wawi für xtcModified / http://www.domain.de (V4.5.11)","","WindowsForms10.BUTTON.app.0.2bf8098_r15_ad14")
    WinWait("Status der Synchronisation","Schließen")
    ControlClick("Status der Synchronisation","Schließen","WindowsForms10.Window.8.app.0.2bf8098_r15_ad11")
    ControlClick("Status der Synchronisation","Schließen","WindowsForms10.BUTTON.app.0.2bf8098_r15_ad11")

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

    ;--- Vorgänge wandeln ---

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

    WinWait("Wawi für xtcModified / http://www.domain.de (V4.5.11)","")
    ControlClick("Wawi für xtcModified / http://www.domain.de (V4.5.11)","","WindowsForms10.BUTTON.app.0.2bf8098_r15_ad12")
    ControlClick("Wawi für xtcModified / http://www.domain.de (V4.5.11)","","WindowsForms10.BUTTON.app.0.2bf8098_r15_ad14")
    WinWait("Status der Synchronisation","Synchronisieren")
    ControlClick("Status der Synchronisation","Synchronisieren","WindowsForms10.Window.8.app.0.2bf8098_r15_ad12")
    WinWait("Status der Synchronisation","Schließen")
    ControlClick("Status der Synchronisation","Schließen","WindowsForms10.SysTabControl32.app.0.2bf8098_r15_ad11")
    ControlClick("Status der Synchronisation","Schließen","WindowsForms10.BUTTON.app.0.2bf8098_r15_ad11")

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

    sleep(600000)

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

    WEnd

    [/autoit]

    Dieses soll nur von 06:30 Uhr bis 17:00 Uhr laufen.

    Ich bin jetzt nach 4,5 Stunden Netzsuche und vielen Codezeilen einbau nicht auf die Lösung gekommen.

    Ich glaube, ich sehe einfach vor lauter Wald die Bäume nicht mehr ......

    Hättet ihr vielleicht noch einen Tipp, was ich davor setzen muss, damit es nur zu dieser Uhrzeit läuft?
    Am liebsten wäre es mir, wenn es Samstags und Sonntags nicht laufen würden, aber damit könnte ich leben, wenn es nicht funktionieren würde.

    Vielen Dank vorab für eure Mühe.

    Gruß Heiko

  • Ich würde das an deiner Stelle aus dem Programm nehmen und per Task-Scheduler erledigen lassen..
    Starte mal die Windows Aufgabenplanung und schau dir an ob das für dich ausreicht. Man kann das auch in AutoIt umsetzen, aber es wäre sinnvoller und einfacher den Task-Scheduler zu nutzen, der ja eh schon im Hintergrund mitläuft.

  • Danke für die schnelle Hilfe und Antwort.

    Ich hatte auch als erstes an die Aufgabenplanung von Windows gedacht, aber die beendet den Task leider nicht.
    Aber dann werde ich einfach einen weiteren Task starten, welcher eben um 17 Uhr den Task von 06:30 Uhr beendet.:)


    Gruß Heiko

  • Das ist aber in AutoIt eigentlich gar kein Problem!

    Ich habe für unsere Internen Abläufe eine eigene voll automatisierte Ablaufsteuerung geschrieben, die bei uns 24/7 (außer bei reboots) rennt und alle sind zufrieden bis begeistert.

    Mach dein Ablauf den du oben hast einfach in eine Funktion. Dann machst du dir eine Hauptschleife in der du prüfst was deine Systemuhrzeit sagt (Vorsicht! Häufiges Problem sind nicht korrekte Uhrzeiten. Meine arbeitet teilweise mit Datenbanken/anderen Rechnern zusammen daher wollte ich zur Vorsicht mal darauf hinweisen.). Dann ganz einfache Abfragen.

    Du könntest du da ja einen festen Zeitplan hast das sogar noch angenehm von den Ressourcen machen.

    [autoit]


    If BitAnd(BitAnd(@HOUR & @MIN & @SEC >= "060000", @HOUR & @MIN & @SEC <= "173000"), BitAnd(@WDAY >= 2, @WDAY <= 6)) Then
    _DeineFunction()
    Else
    ;Entweder ermittel die Zeitdifferenz bis zum nächsten Zeitpunkt an der gearbeitet werden soll und mache ein
    ;Sleep($iErmittelter_Zeitpunkt)
    ;Oder eine Alternative wäre das nutzen von AdlibRegister, welche du außerhalb deinen gewünschten Zeiten UnRegisterst
    ;und für die gewünschte Zeit ein mal registrierst.
    EndIf

    [/autoit]


    Es gibt gewisse Dinge wie einen einmaligen Zeitstempel zu setzen und den für alle Abfragen zu nehmen, was manchmal sehr sinnvoll sein kann, da bei den Systemzeiten jedesmal das aktuelle genommen wird, und es von einer zur anderen Abfrage geändert sein kann.

    Grüße Yaerox

    Grüne Hölle