72114
Goto Top

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!

Content-Key: 102249

Url: https://administrator.de/contentid/102249

Printed on: April 16, 2024 at 21:04 o'clock

Member: Biber
Biber Nov 20, 2008 at 12:03:17 (UTC)
Goto Top
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)
for %i in (*.xls) do @echo %~ti|FindStr /v "^%date%">nul && echo %i   
[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
Mitglied: 72114
72114 Nov 20, 2008 at 13:43:48 (UTC)
Goto Top
Hallo Biber,

danke für die schnelle Antwort. Leider bin ich ein total Batch-Anfänger. Außer Anmeldescripts habe ich noch nichts dergleichen erstellt. Kannst Du mir vielleicht diese Zeile etwas genauer erklären? Wenn ich diese Datei abändere (%%i statt %i und die Ausgabe in eine Testdatei) öffnet sich kurz die Dos-Box aber es passiert sonst nichts...

Gruß

Alex
Member: Biber
Biber Nov 20, 2008 at 16:03:35 (UTC)
Goto Top
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
for %i in (*.xls) do @echo %~ti|FindStr /v "^%date%">nul && echo %i   
im Detail:
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
Mitglied: 72114
72114 Nov 21, 2008 at 09:18:03 (UTC)
Goto Top
Guten Morgen Biber,

danke für die Erklärung. Jetzt bin ich wieder ein Stück schlauer face-smile Leider bekomme ich bei der Ausführung des Befehls immer einen Syntaxfehler face-sad

Gruß

Alex
Mitglied: 72114
72114 Nov 21, 2008 at 10:23:26 (UTC)
Goto Top
So, um noch ein bisschen genauer zu werden ist hier mal der Quellcode. Kann man das so schreiben? Die Emailparameter kannst Du ignorieren. Die benötige dann später für blat.

REM Script zur Überprüfung des Änderungsdatum

REM Hier wir der Zielordner definiert
SET Zielordner=o:\allgemein\mis\_public\*.xls

REM Hier werden die Email-Parameter gesetzt
SET Sender=
SET Password=
SET SMTPServer=
SET Recipient=

REM Prüfung ob Erstellungsdatum ungleich heutigem Datum
for %%i in (%Zielordner%) do @echo %~ti|FindStr /v "^%date%">nul && echo %%i


Es öffnet sich kurz die Dosbox, aber sonst passiert nichts weiter.

In dem Ordner _public befinden sich XLS-Dateien von heute und gestern. Also sollte doch eigentlich in der Dosbox etwas zu sehen sein, oder?
Member: Biber
Biber Nov 21, 2008 at 10:47:23 (UTC)
Goto Top
Moin Alex3103,

<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äne
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
Mitglied: 72114
72114 Nov 21, 2008 at 14:10:10 (UTC)
Goto Top
Hey Biber!

Erstmal Entschuldigung, das ich Dich hier verärgert habe. Aber wie schon gesagt, außer durch Anmeldescripte habe ich noch nie etwas mit Batchprogrammierung zu tun gehabt. Ich habe das fehlende %-Zeichen ergänzt und ich bekomme nun das erhoffte Ergbnis in der Eingabeaufforderung. Nun geht´s für mich nur noch ans modifizieren (Ausgabe in eine Datei + verschicken per Email). Danke für Deine Hilfe. Ich hoffe, dass ich Dich nicht nochmal belästigen muss.

Alex3103
Member: Biber
Biber Nov 21, 2008 at 14:28:19 (UTC)
Goto Top
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