joec
Goto Top

Log-Dateien automatisiert löschen

Ich habe eine Batch-Datei zur Datensicherung erstellt. Diese erstellt auch Log-Datein im Format: Beispiel_JJJJMMTT.log. Nach einer gewissen Zeit sollen die alten Dateien gelöscht werden.

Hallo.

Ich nutze die Funktion Log-Dateien zu erstellen von Robocopy. In meiner Batch-Datei wird dann zur Unterscheidung an den Dateinamen das jeweils aktuelle Datum angehängt (beispiel_JJJJMMTT.log).

Nun sollen im Anschluss an die tägliche Datensicherung ältere Log-Dateien (z.B. älter 5 Tage) automatisch gelöscht werden.

Mein Ansatz war, über die Differenz an Tagen (aktuelles Datum - Datum an Log-Datei) zu entscheiden, welche Dateien gelöscht werden. Ich habe aber keine solche Funktion gefunden.

Vielleicht stelle ich mir dies auch zu kompliziert vor, aber meine Suche hat leider auch nichts ergeben.

Schönen Tag noch.

joec

Content-Key: 43096

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

Ausgedruckt am: 29.03.2024 um 12:03 Uhr

Mitglied: AxelHahn
AxelHahn 26.10.2006 um 16:03:49 Uhr
Goto Top
Hallo joec,


Mit batfiles kannst du keine Datumsberechnung ausführen. Es muss ein Zusatztool oder ein Script (VP oder Perl) her.

Ansätze findest entweder hier:


... oder mit delage32:
http://home.mnet-online.de/horst.muc/win/delage32.zip
http://home.mnet-online.de/horst.muc/win/delage.htm

... oder showdate, was ich mir zur Datumsberechnung geschrieben habe:
http://www.axel-hahn.de/axel/page_compi/wp_showdate.htm
Es kann etwa so aussehen - der Parameter /d: gibt eine Differenz in Tagen an:

set tmpbat="%temp%~tmpbat.bat"
showdate /f:"yymmdd" /d:-45 /p:"set oldDatum=" > %tmpbat%
call %tmpbat%
del %tmpbat%

del [Logverzeichnis]\prefix_%oldDatum%.log


Viele Grüsse
-= Axel =-
Mitglied: Biber
Biber 26.10.2006 um 16:13:02 Uhr
Goto Top
Mit batfiles kannst du keine Datumsberechnung ausführen
...ohne albern zu werden jedenfalls nicht...
Mitglied: miniversum
miniversum 26.10.2006 um 16:36:23 Uhr
Goto Top
Vorschlag warum nicht folgender ansatz:
Du machst täglich eine Sicherung schreibst du. Also willst du alle löschen außer den 5 neusten.
Dann lass dir doch mit dem Dir Befehl alle logdateien (*.log) nach Datum sortiert ausgeben. Dabei stehen die neusten Dateien zuerst und ohne Header (mit der /b Option).
Dann gehst du über diese Liste mit einer for-Schleife drüber und gist dort ein Skip=5 mit.
So werden die ersten 5 Dateien (die 5 neusten) übersprungen udn alle andern gelöscht.

miniversum
Mitglied: joec
joec 27.10.2006 um 12:16:26 Uhr
Goto Top
Hallo Axel,

Vielen Dank für die schnelle und ausführliche Antwort.

Showdate ist natürlich genau richtig für diese Augabe (und auch weitere Aufgaben im Gebiet Backups und Log-Dateien) . Werde ich gleich ausprobieren.

Schönes Wochenende.

joec
Mitglied: joec
joec 27.10.2006 um 12:22:08 Uhr
Goto Top
Hallo miniversum,

diese Lösung ist natürlich auf den ersten Blick sehr naheliegend und da ich in den Verzeichnis nur diese Logdateien habe auch praktikabel. Manchmal sieht man die naheliegensten Lösungen erst auf den zweiten Blick.

Schönes Wochenende.

joec
Mitglied: AxelHahn
AxelHahn 29.10.2006 um 12:17:39 Uhr
Goto Top
Hallo joec,

ich habe noch ein Update der showdate.exe auf meiner Disk aber noch nicht im Web - falls du noch eine Verschiebung um Stunden/ Minuten brauchen solltest:
http://www.axel-hahn.de/axel/page_compi/wp_showdate.htm

Viele Grüsse
Axel
Mitglied: joec
joec 29.10.2006 um 20:48:14 Uhr
Goto Top
Hallo Axel,

danke für den Hinweis auf das Update. Für die Backup-Logs werde ich zwar sicher keine Verschiebung um Stunden/Minuten benötigen, aber man kann ja nicht wissen was noch kommt.

Viele Grüße

joec
Mitglied: Biber
Biber 30.10.2006 um 17:53:56 Uhr
Goto Top
Ich setz diesen Thread auch mal auf gelöst.
Und gebe dem Beitrag wegen der vielen guten Ansätze und Links mal ein paar Sternchen mit auf den Weg.

Danke an alle.

Grüße
Biber