Top-Themen

Aktuelle Themen (A bis Z)

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, 9870 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 ..
Ähnliche Inhalte
Batch & Shell
Batch : Wenn Erstellungsdatum und Änderungsdatum älter als x Tage, lösche Datei
gelöst Frage von Jack005Batch & Shell2 Kommentare

Hallo zusammen, ich weiß, dass es ähnliche Themen schon öfters gab. Ich habe mir auch wirklich so ziemlich alle, ...

Batch & Shell
Batch Änderungsdatum von Dateien vergleichen und ältere löschen
gelöst Frage von 129528Batch & Shell10 Kommentare

Hallo zusammen, ich habe schon andere Artikel und Foreneinträge zu diesem Thema (siehe Titel) gelesen, aber noch keine eindeutige ...

Batch & Shell
Batch Befehl ausführen wenn Datei älter als X Tage
gelöst Frage von BuggerBatch & Shell14 Kommentare

Hallo zusammen, ich finde immer nur Befehle die Dateien oder Ordner löschen nach x Tagen aber nicht um auf ...

Windows Server
Dateien löschen mit Forfiles, welche älter als x Tage sind
Frage von kellbiddenWindows Server4 Kommentare

Hallo Ich habe ein Script geschrieben, um Unterverzeichnise in einem Folder zu löschen. Dazu habe ich ForFile benutzt. ForFile.exe ...

Neue Wissensbeiträge
Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 21 StundenWindows 102 Kommentare

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 23 StundenSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 1 TagInternet3 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 1 TagDSL, VDSL2 Kommentare

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Heiß diskutierte Inhalte
Windows Server
GPO nur für bestimmte Computer
Frage von Leo-leWindows Server13 Kommentare

Hallo Forum, gern würde ich ein Robocopy script per Bat an eine GPO hängen. Wichtig wäre aber dort der ...

Windows Server
KMS Facts for Client configuration
Frage von winlinWindows Server13 Kommentare

Hey Leute, wir haben in unserem Netz nun einen neuen KMS Server. Haben Bestands-VMs die noch nicht aktiviert sind. ...

Windows Tools
Software-Tool zum Entfernen von bösartigem Windows
Frage von emeriksWindows Tools11 Kommentare

Hi, siehe Betreff hat das jemals irgendjemand schonmal sinnvoll eingesetzt? (MRT) E.

Router & Routing
OpenWRT bzw. L.E.D.E auf Buffalo WZR-HP-AG300H - update
gelöst Frage von EpigeneseRouter & Routing11 Kommentare

Guten Tag, ich habe auf einem Buffalo WZR-HP-AG300H die alternative Firmware vom L.E.D.E Projekt geflasht. Ich bin es von ...