Ä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
Please also mark the comments that contributed to the solution of the article
Content-Key: 87259
Url: https://administrator.de/contentid/87259
Printed on: April 24, 2024 at 02:04 o'clock
2 Comments
Latest comment
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