
72114
20.11.2008, aktualisiert am 21.11.2008
Erstellungsdatum einer Datei mit dem aktuellen Datum vergleichen
Guten Morgen!
Ich habe hier ein kleines Problem. Ich habe einen Ordner mit Unterordnern. In diesen Ordnern befinden sich einige Exceldateien. Diese Dateien werden täglich automatisch aktualisiert. Manchmal kommt es aber vor, dass die eine oder andere Datei nicht aktualisiert wurde.
Nun versuche ich gerade eine Batchdatei zu erstellen die das Erstellungsdatum dieser Exceldateien mit dem aktuellen Datum vergleicht. Wenn das Erstellungsdatum mit dem aktuellen Datum übereinstimmt soll nichts unternommen werden. Wenn aber das Erstellungsdatum und das aktuelle Datum nicht überinstimmt, soll eine Email an einen bestimmten Benutzer verschickt werden, mit dem Hinweis die Datei(en) mit dem Dateinamen XY wurde nicht aktualisiert.
Ist das möglich und wenn ja wie realisiere ich das ganze in einem Batch?
Danke schon mal für die Hilfe!
Ich habe hier ein kleines Problem. Ich habe einen Ordner mit Unterordnern. In diesen Ordnern befinden sich einige Exceldateien. Diese Dateien werden täglich automatisch aktualisiert. Manchmal kommt es aber vor, dass die eine oder andere Datei nicht aktualisiert wurde.
Nun versuche ich gerade eine Batchdatei zu erstellen die das Erstellungsdatum dieser Exceldateien mit dem aktuellen Datum vergleicht. Wenn das Erstellungsdatum mit dem aktuellen Datum übereinstimmt soll nichts unternommen werden. Wenn aber das Erstellungsdatum und das aktuelle Datum nicht überinstimmt, soll eine Email an einen bestimmten Benutzer verschickt werden, mit dem Hinweis die Datei(en) mit dem Dateinamen XY wurde nicht aktualisiert.
Ist das möglich und wenn ja wie realisiere ich das ganze in einem Batch?
Danke schon mal für die Hilfe!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 102249
Url: https://administrator.de/forum/erstellungsdatum-einer-datei-mit-dem-aktuellen-datum-vergleichen-102249.html
Ausgedruckt am: 20.05.2025 um 03:05 Uhr
8 Kommentare
Neuester Kommentar
Moin Alex3103,
willkommen im Forum.
Ähnliche Fragestellungen haben wir schon ein paar mal im "Batch & Shell".
Deshalb nur in Kurzfassung:
a) alle *.xls-Dateien im aktuellen Verzeichnis mit Erstellungsdatum ungleich heute:
(Beispiel am CMD-Prompt)
[Im Batch zwei %-Zeichen überall dort, wo jetzt eins vor der Variable %i steht.]
b) Ggf Umleiten der Ausgabe mit einem angehängten ">>"%temp%\%date%.lst" in eine Textdatei.
c) Senden dieser Liste "%temp%\%date%.lst" mittels Blat.exe (Link ist unter Links in Batch & Shell).
Grüße
Biber
willkommen im Forum.
Ähnliche Fragestellungen haben wir schon ein paar mal im "Batch & Shell".
Deshalb nur in Kurzfassung:
a) alle *.xls-Dateien im aktuellen Verzeichnis mit Erstellungsdatum ungleich heute:
(Beispiel am CMD-Prompt)
for %i in (*.xls) do @echo %~ti|FindStr /v "^%date%">nul && echo %i
b) Ggf Umleiten der Ausgabe mit einem angehängten ">>"%temp%\%date%.lst" in eine Textdatei.
c) Senden dieser Liste "%temp%\%date%.lst" mittels Blat.exe (Link ist unter Links in Batch & Shell).
Grüße
Biber
Moin Alex3103,
ich versuche mal die Zeile oben zu erläutern - empfehle aber ausdrücklich, die einzelnen Teile auch erstmal am CMD-Prompt durchzuspielen.
Die ganze CMD-Prompt-Zeile
im Detail:
... FindStr soll in dieser Ausgabe nach allen Zeilen suchen, die
- NICHT (Parameter /v)
- am Anfang der Zeile (Parameter ^)
... das aktuelle Datum %date%
...enthalten
Du solltest (spätestens in einer Batch-Version) noch die Wildcad-Angabe *.xls um den konkreten Pfad ergänzen.
Also z.B. D:\Daten\Tabellen\*.xls oder wo-auch-immer deine Tabellen liegen.
Grüße
Biber
ich versuche mal die Zeile oben zu erläutern - empfehle aber ausdrücklich, die einzelnen Teile auch erstmal am CMD-Prompt durchzuspielen.
Die ganze CMD-Prompt-Zeile
for %i in (*.xls) do @echo %~ti|FindStr /v "^%date%">nul && echo %i
for %i in (*.xls) ........
= führe nacheinander für alle Dateien im aktuellen Verzeichnis %i, mit dem Dateinamen irgendwas.xls ...do @echo %~ti
= .... mach mir eine Bildschirmausgabe des Datums %~ti der einzelnen Datei....|FindStr /v "^%date%">nul
und pipe (das ist dieses Zeichen "|") = leite die Ausgabe direkt aus Input für den FindStr-Befehl weiter... FindStr soll in dieser Ausgabe nach allen Zeilen suchen, die
- NICHT (Parameter /v)
- am Anfang der Zeile (Parameter ^)
... das aktuelle Datum %date%
...enthalten
&& echo %i
und wenn Du ein Dateidatum gefunden hast, das nicht von heute ist, gib den Dateinamen aus.Du solltest (spätestens in einer Batch-Version) noch die Wildcad-Angabe *.xls um den konkreten Pfad ergänzen.
Also z.B. D:\Daten\Tabellen\*.xls oder wo-auch-immer deine Tabellen liegen.
Grüße
Biber
Moin Alex3103,
<OT>
schon wieder November....
Zeit der Besinnung und der Rückblicke...
ein kurzer Blick zurück:
Details zu den Formatierungsmöglichkeiten siehe in unseren FAQ.
Soll heißen: Hey, wenn sogar ich meinen Kot formatieren kann, schaffst Du das auch.
</OT>
Back to Fred.
a) Im Batch müssen ALLE Prozentzeichen vor dynamischen Variablen ( die %i und %j und %k von FOR-Anweisungen verdoppelt werden. Das gilt auch für "abgeleitete dynamische Variablen wie %~i oder %~ti oder %~dpnxi.
Also Ersetze::
b) wenn ich das lese:
Wie testet ihr denn Batche? Per Doppelklick via Explorer?
Magst Du evtl mal versuchen, wie sich der Ablauf gestaltet, wenn Du die Proof-of-Concept-Phase von einem geöffneten CMD-Prompt ("Start"-"Ausführen"->cmd) aus durchführst?
Grüße
Biber
<OT>
schon wieder November....
Zeit der Besinnung und der Rückblicke...
ein kurzer Blick zurück:
- Vor 100 Jahren: zu Beginn der so genannten "industriellen Revolution" wurden die Kotflügel erfunden.
- Vor 50 Jahren: in fast allen Haushalten, in denen ein Keyboard existierte, wurde dieses ausschlißlich zum manuellen Erzeugen von Tanznusik genutzt
- Vor 20 Jahren zu Beginn der "PC-Revolution" wurde als zeitgemäßes Äquivalent zu o.g. Kotflügeln die so genannte Codeformatierung flächendeckend verbreitet.
Details zu den Formatierungsmöglichkeiten siehe in unseren FAQ.
Soll heißen: Hey, wenn sogar ich meinen Kot formatieren kann, schaffst Du das auch.
</OT>
Back to Fred.
a) Im Batch müssen ALLE Prozentzeichen vor dynamischen Variablen ( die %i und %j und %k von FOR-Anweisungen verdoppelt werden. Das gilt auch für "abgeleitete dynamische Variablen wie %~i oder %~ti oder %~dpnxi.
Also Ersetze::
for %%i in (%Zielordner%) do @echo %~ti...
Durch:for %%i in (%Zielordner%) do @echo %%~ti....
b) wenn ich das lese:
Es öffnet sich kurz die Dosbox, aber sonst passiert nichts weiter.
...dann bekomme ich immer meine MigräneWie testet ihr denn Batche? Per Doppelklick via Explorer?
Magst Du evtl mal versuchen, wie sich der Ablauf gestaltet, wenn Du die Proof-of-Concept-Phase von einem geöffneten CMD-Prompt ("Start"-"Ausführen"->cmd) aus durchführst?
Grüße
Biber
Moin Alex,
keine Sorge, Du hast mich nicht verärgert oder belästigt....
Eigentlich bin ja ein gaaanz Ruhiger und Stiller.
(Gerade gestern hat mir mein Cheffe einen Taschenspiegel vor dem Mund gehalten, um festzustellen, ob da irgendetwas beschlägt).
Versuche bitte erstmal, über die Forumssuche weiterzukommen.
Aber wenn es klemmt.... einfach fragen.
Schönes Wochenende
Biber
keine Sorge, Du hast mich nicht verärgert oder belästigt....
Eigentlich bin ja ein gaaanz Ruhiger und Stiller.
(Gerade gestern hat mir mein Cheffe einen Taschenspiegel vor dem Mund gehalten, um festzustellen, ob da irgendetwas beschlägt).
Versuche bitte erstmal, über die Forumssuche weiterzukommen.
Aber wenn es klemmt.... einfach fragen.
Schönes Wochenende
Biber