Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Änderungsdatum einer Datei prüfen und wenn älter als x Mail senden

Frage Entwicklung Batch & Shell

Mitglied: Larz

Larz (Level 2) - Jetzt verbinden

08.05.2008, aktualisiert 13.05.2008, 9725 Aufrufe, 2 Kommentare

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

01.
REM Script zur Überprüfung des Änderungsdatums einer Datei. Ist das Datum 
02.
REM älter als Heute -x wird eine Mail versendet 
03.
REM ============================================= 
04.
 
05.
 
06.
REM Hier wird die Zieldatei definiert: 
07.
REM ---------------------------------- 
08.
SET Zieldatei=\\server\freigabe\datei.txt 
09.
REM Hier wird die Dauer in Tagen angegeben, innerhalb der eine Änderung  
10.
REM innerhalb dieser Datei stattgefunden haben muss: 
11.
SET LastModified=2 
12.
 
13.
 
14.
REM Hier werden die E-Mail-Parameter gesetzt: 
15.
REM ----------------------------------------- 
16.
SET Sender=you@here.de 
17.
SET Password=yourpassword 
18.
SET SMTPServer=smtp.provider.de 
19.
SET Recipient=you@here.de 
20.
 
21.
 
22.
 
23.
 
24.
REM Schreibe aktuelles Datum und Uhrzeit in Log >> log.txt 
25.
ECHO Aktuelles Datum: >> log.txt 
26.
Date /t	>> log.txt 
27.
ECHO ------------------ >> log.txt 
28.
Echo Aktuelle Uhrzeit: >> log.txt 
29.
Time /t >> log.txt 
30.
 
31.
REM Prüfung, ob die Datei existiert 
32.
IF NOT EXIST %Zieldatei% GOTO :FILEDOESNOTEXIST 
33.
 
34.
WasFile %Zieldatei% modified after today-%LastModified% >> log.txt 
35.
if not errorlevel 1 goto TRUE >> log.txt 
36.
 
37.
:LASTMODIFICATION >> log.txt 
38.
ECHO ==================================================================================== >> log.txt 
39.
ECHO Datei %Zieldatei% wurde innerhalb der letzten %LastModified% Tage nicht verändert, sende Mail >> log.txt 
40.
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 
41.
ECHO ==================================================================================== >> log.txt 
42.
EXIT 
43.
 
44.
:TRUE  
45.
ECHO ==================================================================================== >> log.txt 
46.
ECHO Datei wurde innerhalb der letzten zwei Tage geändert >> log.txt 
47.
ECHO ==================================================================================== >> log.txt 
48.
EXIT 
49.
 
50.
:ERROR 
51.
ECHO Datei nicht gefunden 
52.
EXIT 
53.
 
54.
:FILEDOESNOTEXIST 
55.
ECHO ==================================================================================== >> log.txt 
56.
ECHO Die Datei %Zieldatei% existiert nicht oder kann nicht aufgerufen werden, sende Mail >> log.txt 
57.
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 
58.
ECHO ==================================================================================== >> log.txt 
59.
EXIT 
60.
 
61.
 
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
Mitglied: bastla
08.05.2008 um 18:50 Uhr
Hallo Larz!

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
01.
SET Zieldatei=\\server\freigabe\datei.txt
einfach ein
01.
for %%i in ("\\server\freigabe\*.bak") do set "Zieldatei=%%~fi"
verwenden und den Rest gleich lassen.

Sollten mehrere .bak-Dateien herumliegen, könntest Du die neueste davon suchen lassen:
01.
set "Pfad=\\server\freigabe" 
02.
for /f "delims=" %%i in ('dir /b /a-d /od "%Pfad%\*.bak"') do set "Zieldatei=%Pfad%\%%i"
Grüße
bastla
Bitte warten ..
Mitglied: Larz
13.05.2008 um 13:49 Uhr
Hallo bastla,

habe deinen zweiten Vorschlag eingebaut, mein Ergebnis sieht so aus und funktioniert einwandfrei:

01.
REM Script zur Überprüfung des Änderungsdatums einer Datei. Ist das Datum 
02.
REM älter als Heute -%Lastmodified% wird eine Mail versendet 
03.
REM ============================================= 
04.
 
05.
REM hier wird der zu prüfende Dateityp (nur Suffix, ohne *.) angegeben 
06.
REM ---------------------------------- 
07.
SET Filetype=bak 
08.
 
09.
REM Hier wird der Speicherort Zieldatei definiert: 
10.
REM ---------------------------------- 
11.
SET Pfad=\\server\freigabe 
12.
 
13.
FOR /f "delims=" %%i in ('dir /b /a-d /od "%Pfad%\*.%Filetype%"') do set "Zieldatei=%Pfad%\%%i" 
14.
 
15.
REM Hier wird die Dauer in Tagen angegeben, innerhalb der eine Änderung  
16.
REM der neuesten Datei dieses Typs im Verzeichnis stattgefunden haben muss: 
17.
REM ---------------------------------- 
18.
SET LastModified=2 
19.
 
20.
 
21.
REM Hier werden die E-Mail-Parameter gesetzt: 
22.
REM ----------------------------------------- 
23.
SET Sender=Sender@Mail-Domäne.de 
24.
SET Password=passwort 
25.
SET SMTPServer=smtp.Mail-Domäne.de 
26.
SET Recipient=Empfänger@Mail-Domäne.de 
27.
 
28.
 
29.
 
30.
 
31.
REM ============================================= 
32.
REM ============================================= 
33.
REM        AB HIER NICHTS MEHR VERÄNDERN! 
34.
REM ============================================= 
35.
REM ============================================= 
36.
 
37.
 
38.
REM Lösche vorletzte Log-Datei 
39.
DEL lastlog.txt 
40.
 
41.
REM Umbenennung letztes Log in vorletztes Log 
42.
REN log.txt lastlog.txt 
43.
 
44.
REM Schreibe aktuelles Datum und Uhrzeit in Log >> log.txt 
45.
ECHO Aktuelles Datum: >> log.txt 
46.
Date /t	>> log.txt 
47.
ECHO ------------------ >> log.txt 
48.
Echo Aktuelle Uhrzeit: >> log.txt 
49.
Time /t >> log.txt 
50.
 
51.
REM Prüfung, ob eine Datei dies definierten Typs dort existiert 
52.
IF NOT EXIST %Pfad%\*.%Filetype% GOTO :FILEDOESNOTEXIST 
53.
 
54.
WasFile %Zieldatei% modified after today-%LastModified% >> log.txt 
55.
if not errorlevel 1 goto TRUE >> log.txt 
56.
 
57.
:LASTMODIFICATION >> log.txt 
58.
ECHO ==================================================================================== >> log.txt 
59.
ECHO Datei %Zieldatei% wurde innerhalb der letzten %LastModified% Tage nicht verändert, sende Mail >> log.txt 
60.
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 
61.
ECHO ==================================================================================== >> log.txt 
62.
EXIT 
63.
 
64.
:TRUE  
65.
ECHO ==================================================================================== >> log.txt 
66.
ECHO %Zieldatei% wurde innerhalb der letzten %Lastmodified% Tage geändert >> log.txt 
67.
ECHO ==================================================================================== >> log.txt 
68.
EXIT 
69.
 
70.
:ERROR 
71.
ECHO Datei nicht gefunden 
72.
EXIT 
73.
 
74.
:FILEDOESNOTEXIST 
75.
ECHO ==================================================================================== >> log.txt 
76.
ECHO Eine *.%Filetype%-Datei existiert nicht oder kann nicht aufgerufen werden, sende Mail >> log.txt 
77.
blat.exe -body "Eine %Filetype%-Datei 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 
78.
ECHO ==================================================================================== >> log.txt 
79.
EXIT
Für Nachbauer - man benötigt im selben Verzeichnis noch die Dateien log.txt (aktuelles Log), lastlog.txt (vorletztes Log), footer.txt (Hier ist nur ein Hinweis auf den Author des Scripts drin), blat.exe (der Kommandozeilen-Mailer) und WasFile.exe (um das Änderungsdatum auszuwerten.

Grüße & Danke
Larz
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Batch & Shell
gelöst PowerShell, Log Datei auslesen, bei Änderungen E-Mail senden (12)

Frage von swissbull zum Thema Batch & Shell ...

Exchange Server
gelöst Exchange Server Mail senden (5)

Frage von MorrowToon zum Thema Exchange Server ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...