BATch-Dateien - Run If Older

Programme nur ausführen, wenn sie sie zuletzt vor mindestens n Tagen ausgeführt worden sind

Einleitung

Auf einem ständig laufenden Server richtet man wiederkehrende Dienste einfach mit vorgegebenen Zeiten im Taskplaner ein. Und daheim der PC - wenn man dort Routineaufgaben per Taskplaner erledigen möchte, muss der PC zu ebenjener Zeit eingeschaltet sein. Zumeist ist er das nicht.

RUN_IF_OLDER ist eine Batch-Datei, die ein Programm nur dann ausführt, wenn die als Parameter angegebene Datei das letzte mal vor n Tagen ausgeführt worden ist. Damit hat man die Möglichkeit, einen Task mit einer bestimten Aufgabe jede Stunde einmal auszuführen, aber die eigentliche Aufgabe wird immer nur alle paar Tage gestartet.

Das funktioniert so:
In einer Textdatei merkt sich RUN_IF_OLDER, wann ein Skript das letzte Mal erfolgreich ausgeführt worden ist. Soll ein Programm gestartet werden, wird in dieser Textdatei das Datum der letzten Ausführung extrahiert. Ist die Differenz grösser als ein mitgegebenes Mindestalter in Tagen oder exisitert noch kein Eintrag, wird das Programm gestartet.

Aufruf

Das Skript braucht 2 Parameter. Optional kann man als dritten Parameter ein sinnvolles Label mitgeben, mit dem die Zeit gespeichert wird. Fehlt der 3. Parameter, wird der Programmname als Label verwendet.

run_if_older [n] [script/ program to execute] [Label]
  [n] Anzahl der Tage
  [script/ program to execute]
  [label] Label (optional)


Beispiel:
Wenn ich ein Skript zum Defragmentieren der Disk habe, das einmal pro Woche starten soll, wähle ich ein Zeitraum vom 7 Tagen. Das Skript unter D:\Skripte\. Zum Speichern des Ausführungsdatums gebe ich ein Label "defrag_all_hd" mit.
Im Taskplaner kann man ab 00:02 stündlich einen solchen Aufruf eintragen:

C:\bin\run_if_older 7 D:\Skripte\defrag_all_hd_drives.bat defrag_all_hd
run_if_older-Aufruf im Taskplaner


Der erste Aufruf führt zum Ausführen des Defragmentier-Skripts. Die Ausführungszeit wird in einem Textfile lastrun.txt gespeichert:

2007-06-10 19:02:00 defrag_all_hd 


Alle weiteren Aufrufe werden diesen Zeitstempel mit dem aktuellen Datum vergleichen.

History

  • 04.10.2008 - V1.1
    Parameter /Y beim Move-Kommando hinzugefügt
  • 10.06.2007 - V1.0
    erste öffentliche Version

Anforderungen

  • Windows XP, Vista, 7 (wahrsch. läuft es auch auf Win 2000)
  • Mein Tool showdate im selben Ordner.
  • Schreibrechte auf die Datei lastrun.txt im selben Ordner.

Download:

Die Bat-Datei (ohne Showdate; dieses müssen Sie in den Ordner der Bat-Datei kopieren):
run_if_older.zip (1 kB)

... inkl. Showdate (unsicher, welchen der Links nehmen? - dann dies hier herunterladen):
run_if_older_complete.zip (23 kB)