Änderungsdatum einer Datei prüfen und wenn älter als x Mail senden
Hallo zusammen,
ich habe mir folgende Batch gebastelt, die eine Mail versendet wenn eine Datei entweder nicht vorhanden ist oder ihr Änderungsdatum älter als Heute -x
Das funktioniert so lange gut, wie die Datei auch immer gleich heißt. Nun möchte ich aber Sicherungen einer SQL-Datenbank prüfen lassen, deren Dateiname jeweils aus dem Datenbanknamen, dem Sicherungsdatum und der Endung .bak bestehen.
Man könnte doch sicherlich den vorhandenen Dateinamen einlesen, zerhackstückeln und dann erst prüfen lassen...
Weiß jemand Rat?
Danke und Gruß
Larz
ich habe mir folgende Batch gebastelt, die eine Mail versendet wenn eine Datei entweder nicht vorhanden ist oder ihr Änderungsdatum älter als Heute -x
REM Script zur Überprüfung des Änderungsdatums einer Datei. Ist das Datum
REM älter als Heute -x wird eine Mail versendet
REM =============================================
REM Hier wird die Zieldatei definiert:
REM ----------------------------------
SET Zieldatei=\\server\freigabe\datei.txt
REM Hier wird die Dauer in Tagen angegeben, innerhalb der eine Änderung
REM innerhalb dieser Datei stattgefunden haben muss:
SET LastModified=2
REM Hier werden die E-Mail-Parameter gesetzt:
REM -----------------------------------------
SET Sender=you@here.de
SET Password=yourpassword
SET SMTPServer=smtp.provider.de
SET Recipient=you@here.de
REM Schreibe aktuelles Datum und Uhrzeit in Log >> log.txt
ECHO Aktuelles Datum: >> log.txt
Date /t >> log.txt
ECHO ------------------ >> log.txt
Echo Aktuelle Uhrzeit: >> log.txt
Time /t >> log.txt
REM Prüfung, ob die Datei existiert
IF NOT EXIST %Zieldatei% GOTO :FILEDOESNOTEXIST
WasFile %Zieldatei% modified after today-%LastModified% >> log.txt
if not errorlevel 1 goto TRUE >> log.txt
:LASTMODIFICATION >> log.txt
ECHO ==================================================================================== >> log.txt
ECHO Datei %Zieldatei% wurde innerhalb der letzten %LastModified% Tage nicht verändert, sende Mail >> log.txt
blat.exe -body "Die Datei %Zieldatei% wurde innerhalb der letzten %LastModified% Tage nicht veraendert" -ps FOOTER.txt -to %Recipient% -subject "Letzte Aenderung zu lange her" -Server %SMTPServer% -f %Sender% -u %Sender% -pw %Password% >> log.txt
ECHO ==================================================================================== >> log.txt
EXIT
:TRUE
ECHO ==================================================================================== >> log.txt
ECHO Datei wurde innerhalb der letzten zwei Tage geändert >> log.txt
ECHO ==================================================================================== >> log.txt
EXIT
:ERROR
ECHO Datei nicht gefunden
EXIT
:FILEDOESNOTEXIST
ECHO ==================================================================================== >> log.txt
ECHO Die Datei %Zieldatei% existiert nicht oder kann nicht aufgerufen werden, sende Mail >> log.txt
blat.exe -body "Die Datei %Zieldatei% existiert nicht oder konnte nicht erreicht werden!" -ps FOOTER.txt -to %Recipient% -subject "Datei nicht existent oder unerreichbar" -Server %SMTPServer% -f %Sender% -u %Sender% -pw %Password% >> log.txt
ECHO ==================================================================================== >> log.txt
EXIT
Das funktioniert so lange gut, wie die Datei auch immer gleich heißt. Nun möchte ich aber Sicherungen einer SQL-Datenbank prüfen lassen, deren Dateiname jeweils aus dem Datenbanknamen, dem Sicherungsdatum und der Endung .bak bestehen.
Man könnte doch sicherlich den vorhandenen Dateinamen einlesen, zerhackstückeln und dann erst prüfen lassen...
Weiß jemand Rat?
Danke und Gruß
Larz
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 87259
Url: https://administrator.de/forum/aenderungsdatum-einer-datei-pruefen-und-wenn-aelter-als-x-mail-senden-87259.html
Ausgedruckt am: 04.04.2025 um 06:04 Uhr
2 Kommentare
Neuester Kommentar
Hallo Larz!
Wenn es immer nur um eine Datei geht, könntest Du als Ersatz für Dein
einfach ein
verwenden und den Rest gleich lassen.
Sollten mehrere .bak-Dateien herumliegen, könntest Du die neueste davon suchen lassen:
Grüße
bastla
Man könnte doch sicherlich den vorhandenen Dateinamen einlesen, zerhackstückeln und dann erst prüfen lassen...
Wozu "zerhackstückeln" - Du prüfst doch ohnehin nicht den Dateinamen, sondern das Änderungsdatum ...Wenn es immer nur um eine Datei geht, könntest Du als Ersatz für Dein
SET Zieldatei=\\server\freigabe\datei.txt
for %%i in ("\\server\freigabe\*.bak") do set "Zieldatei=%%~fi"
Sollten mehrere .bak-Dateien herumliegen, könntest Du die neueste davon suchen lassen:
set "Pfad=\\server\freigabe"
for /f "delims=" %%i in ('dir /b /a-d /od "%Pfad%\*.bak"') do set "Zieldatei=%Pfad%\%%i"
Grüße
bastla