Do Until - Systemzeit funktioniert nicht

  • Hallo zusammen,

    ich habe folgendes Problem,

    ich möchte gerne jede Stunde eine .bat ausführen, bzw. Jede Volle Stunde plus 16 Sekunden. (01:16, 02:16 usw.)

    Und es soll in Endlosschleife laufen nach dem Start.

    Könnt ihr mir sagen warum mein Script nicht funktioniert und die Datei nicht ausführt?


  • Wäre es nicht einfacher, dafür die Aufgabenplanung (vormals Taskplaner) zu verwenden ?

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Das war natürlich auch mein erster Gedanke, Jedoch funktioniert dass aus irgendwelchen Gründen nicht. (Mein Kollege braucht es so).

    Was noch Wichtig zu sagen wäre ist, dass der Server mit AM und PM arbeitet.

    Ich habe das Script mal dahingehend angepasst.

  • Warum schreibst du die letzte Ausführung nicht in eine Datei (z.B. Ini) und prüfst auf diese (+1h)?

    Dann sparst du dir diese ganzen Zeiten manuell einzutragen, wobei das mit der Aufgabenplanung durchaus am meisten Sinn macht.

    "Aus irgendwelchen Gründen" finde ich immer schwierig, evtl. kann man euch hier besser helfen wenn man den Grund dafür findet und behebt!?

  • Zitat

    "Aus irgendwelchen Gründen" finde ich immer schwierig, evtl. kann man euch hier besser helfen wenn man den Grund dafür findet und behebt!?

    Das ist natürlich der nächste Schritt. Aber zuerst muss es damit laufen.

    Meine Frage ist nur:

    So wie mein Script aufgebaut ist - Funktioniert es so? Also wird er die Datei zu den angegebenen Zeiten starten?

  • Das kannst du doch selber am besten testen...

    Ich sehe aber ein Problem (evtl. aber gewollt):

    Zwischen den letzten beiden Ausführungen liegen 12 Stunden!?!

    Und wenn du wirklich Probleme mit der Zeitangabe vom PC hast verwende _NowTime(5) (24h Format mit Sekunden; siehe Hilfe) dann müsstest du mit deiner vorgehensweise aber 24 Einträge schreiben, was du wiederum kürzen könntest in dem du das in eine Funktion packst aber am besten wäre wirklich die Zeit in einer Datei zu speichern (Absturzsicherung) oder einer Variable (Inhalt nach Absturz weg), je nachdem was du brauchst.

  • Also das Script scheint tatsächlich zu funktionieren. :)

    Ich hatte es erst für 24 Stunden erstellt. - Der Server läuft allerdings auf einem 12 Stunden Zeitsystem (AM,PM).

    Daher habe ich nur die ersten 12 Stunden genommen.

    Gibt es eine Möglichkeit zwischen AM und PM zu unterscheiden?

    mit dem _NowTime(3) mit der (3) sollte er ja automatisch das Zeit Format von Windows auswählen richtig?

  • ungetestet:

    8 Mal editiert, zuletzt von Moombas (30. September 2021 um 14:24)

  • Also das Script scheint tatsächlich zu funktionieren. :)

    Ich hatte es erst für 24 Stunden erstellt. - Der Server läuft allerdings auf einem 12 Stunden Zeitsystem (AM,PM).

    Daher habe ich nur die ersten 12 Stunden genommen.

    Gibt es eine Möglichkeit zwischen AM und PM zu unterscheiden?

    mit dem _NowTime(3) mit der (3) sollte er ja automatisch das Zeit Format von Windows auswählen richtig?

    Dein Skript kann nicht richtig laufen, da er nicht die richtige Zeit zu deiner Anforderung hat.

    Deine Anforderung X Stunden + 16 Sekunden.

    Deine Annahme ist aber: 01:16 = 1 Stunde und 16 Minuten!

    Im 12 Stunden Format hast du dennoch das Problem, das der Abstand zwischen 12:00 und 00:00 12 Stunden sind...

    Und bei einem Intervall von 100ms, könnte das Script theoretisch 10mal Pro Stunde laufen!

    Zu deiner Frage in Fett: Ja, er nimmt das Systemschema.

  • Ich bekomme beim ausführen deines Vorschlages folgende Fehlermeldung in der konsole/Scite

    (8) : ==> Unknown function name.:

    If BatchStart($Hour) Then $Hour += 1

    If ^ ERROR

    >Exit code: 1 Time: 0.4524

  • Ich glaube ich habe den Fehler gefunden.

    Ich bin bei Stringsplit warum auch immer von einem 0-basiertem Array ausgegangen. Das ist im Standard aber ein 1-Basiertes Array. einmal ändern (oben bereits passiert).

  • Hallo diebratwurst,

    versuche es doch mal so. Zeiten sind zum testen geändert.

    Das $Hour +=1 hat am Anfang immer die Zeit Automatisch hochgezählt, ehe es in die Batch Schleife gesprungen ist.

    Gruß gmmg

  • Hallo gmmg

    Das funktioniert tatsächlich super bis jetzt.

    er öffnet auch eine "Test-Batch" File die ich zum testen auf dem Server erstellt habe.

    Vielen Dank euch allen. Ihr konntet mir sehr helfen und ich konnte auch ein wenig für zukünftige Projekte mitnehmen. :)