Automatisieren des Löschvorgangs alter Protokolldateien
Viele Dienste und Programme erzeugen Protokolldateien als Prüfpfad für alles, was sie tun. Allerdings haben nur wenige eine Funktion, die diese Dateien entfernt, wenn sie ihre Nützlichkeit überleben. Daher befinden sich diese Protokolldateien auf Ihrem System, wodurch Speicherplatz beansprucht wird (manchmal mehr als Sie wissen), und die Verzeichnisse für die Zeiten unübersichtlich, in denen Sie auf sie zugreifen müssen.
Wenn Sie diese Dateien also nicht benötigen, warum sollten Sie sie behalten? Wir zeigen Ihnen, wie Sie diese alten Protokolldateien auf einfache Weise entfernen können, um ein ordentliches System zu erhalten.
Die unten aufgeführten Punkte sind zwar unmittelbar für die Verwaltung von Protokolldateien von Nutzen, Sie können jedoch dieselben Techniken auch auf andere Arten von Dateien anwenden, die ablaufen (z. B. Sicherungen)..
Dateien basierend auf dem Datum der letzten Änderung entfernen
Wenn Sie Ihre vorhandenen Protokolldateien ausschließlich anhand des Datums der letzten Änderung der Datei löschen möchten, müssen Sie lediglich den Befehl FORFILES verwenden. Zum Beispiel:
FORFILES / P "C: LogFiles" / S / D -7 / C "CMD / C DEL / F / Q @PATH"
Der obige Befehl löscht alle Dateien aus dem Ordner „C: LogFiles“ und alle Unterordner, die in der letzten Woche nicht geändert wurden.
Der Befehl FORFILES ist mit den Suchmuster- und Datumsfunktionen ziemlich flexibel. Anstelle einer Nummer können Sie beispielsweise ein Datum eingeben, z. B. '-1/13/2010', um Dateien zu löschen, die vor dem angegebenen Datum zuletzt geändert wurden.
Um alle Details zu den Möglichkeiten von FORFILES zu erhalten, rufen Sie die Online-Hilfe mit dem folgenden Befehl an der Eingabeaufforderung auf:
FORFILES /?
Dateien anhand eines Datumsmusters im Dateinamen entfernen
Viele Anwendungen und Dienste erzeugen Protokolldateien, die auf einem Datumsmuster basieren und eine Protokolldatei pro Tag enthalten (d. H. Log100113.txt, Backup-2010-01-13.zip usw.). Bei diesen Dateitypen ist es vorzuziehen, das Löschen auf der Grundlage des Datums der Datei, die im Dateinamen enthalten ist, und nicht dem Datum der letzten Änderung zu löschen. Dies ist nützlich für Szenarien wie das Speichern aller Protokolldateien der letzten 3 Monate. Leider verfügt Windows nicht über einen systemeigenen Befehl mit dieser Art von Logik. Mit einem Batch-Skript können wir diese Aufgabe jedoch problemlos erledigen.
Die Verwendungskommentare des Skripts enthalten Beispiele, daher sollte es ziemlich einfach sein, dies herauszufinden.
Das Skript
@ECHO OFF ECHO Löschen nach Datum Muster ECHO Geschrieben von: Jason Faulkner ECHO SysadminGeek.com ECHO. ECHO. REM Löschen / Auswählen von Dateien basierend auf einem Datum, bei dem MM und / oder DD für Dateinamensmuster verwendet werden. REM REM-Verwendung: REM DeleteByDatePattern / M | / D NumberToKeep Path PatternPrefix PatternPostfix [/ L | / DEL] REM / M Gibt an, dass das verwendete Muster auf Monaten basiert. REM / D Gibt an, dass das verwendete Muster auf Tage basiert. REM NumberToKeep REM Die Anzahl der Monate (/ M) oder Tage (/ D), die beibehalten werden sollen, einschließlich des aktuellen. REM Wenn Sie beispielsweise 1 eingeben, wird nur der aktuelle Monat / Tag beibehalten, und bei 6 wird das aktuelle Minus 5 beibehalten. REM-Pfad Unterverzeichnisse werden durchsucht. REM PatternPrefix REM Das Dateisuchmuster, das beim Erstellen der Suchzeichenfolge vor dem Monat / Tag platziert wurde. REM PatternPostfix REM Das Dateisuchmuster, das beim Erstellen der Suchzeichenfolge nach dem Monat / Tag platziert wurde. REM / L (optional) Listet alle Dateien auf, die dem Muster entsprechen, löscht sie jedoch nicht. REM / DEL (optional) Löscht alle Dateien, die dem Muster entsprechen. REM REM-Beispiele: REM DeleteByDatePattern / M 3 "% WinDir% system32LogFiles" ex ?? ?? .log / DEL REM Löscht alle IIS-Protokolldateien (Windows Server 2003) mit Ausnahme der aktuellen und der vorherigen zwei Monate. REM DeleteByDatePattern / D 7 "D: Backup" * - ???? - ?? - .zip / DEL REM Löscht alle ZIP-Dateien mit Ausnahme der aktuellen Woche aus dem Ordner D: Backup. REM Das oben angenommene Dateinamensmuster lautet "* -YYYY-MM-DD.zip". REM DeleteByDatePattern / M 0 "C:" * () * / L REM Gibt eine Liste aller Dateien auf dem Laufwerk C aus, die dem Muster entsprechen: " * -MM- * "(wobei MM durch 01-12 ersetzt wird) REM DeleteByDatePattern / D 14" C: Logs "Log - ???? .txt REM Druckt eine Liste aller Muster, die vom Skript verarbeitet werden würden. SETLOCAL EnableExtensions EnableDelayedExpansion REM Nimmt an, dass Ihre Windows-Datums- / Uhrzeiteinstellungen auf das Format 'DayOfWeek M / D / YYYY' gesetzt sind. REM Wenn Ihr Format anders ist, müssen Sie die folgenden Variablen so ändern, dass sie aufeinander abgestimmt sind. FOR / F "Token = 1,2,3,4 Delims = /" %% A IN ('DATE / T') DO (SET Monat = %% B SET Tag = %% C SET Jahr = %% D) IF / I % 1 == / M (SET Keep =% Month% SET Max = 12) IF / I % 1 == / D (SET Keep =% Tag% SET Max = 31 REM-Funktion off von den maximalen Tagen des vorherigen Monats SET / A PrevMonth =% Month% -1 IF! PrevMonth! EQU 2 (SET Max = 28 REM Sprungjahre ... fügen Sie nach Bedarf weitere hinzu. IF / I% Jahr% EQU 2012 SET Max = 29 IF / I% Jahr% EQU 2016 SET Max = 29) IF / I! PrevMonth! EQU 4 SET Max = 30 IF / I! PrevMonth! EQU 6 SET Max = 30 IF / I! PrevMonth! EQU 9 SET Max = 30 IF / I! PrevMonth! EQU 11 SET Max = 30) SET Current =% Keep% SET / A Keep =% Keep% -% 2 + 1 REM Bestimmen Sie den zu entfernenden Bereich. SET / A RemoveHighStart =% Current% + 1 IF / I% Keep% LSS 1 (SET RemoveLow = 0 SET / A RemoveHighEnd =% Keep% +% Max% -1) ELSE (SET / A RemoveLow =% Keep% -1) SET RemoveHighEnd =% Max%) REM Verarbeitet alle Werte unterhalb des unteren Bereichs. FOR / L %% Z IN (1,1,% RemoveLow%) DO CALL: Prozess %% Z% 3% 4% 5% 6 REM Prozess alle größer als der obere Bereich. FOR / L %% Z IN (% RemoveHighStart%, 1,% RemoveHighEnd%) DO CALL: Prozess %% Z% 3% 4% 5% 6 ENDLOCAL GOTO Ende: SET-Taste verarbeiten = 0% 1 SET-Taste =% -Taste: ~ -2% SET Target = "% ~ 2% ~ 3% Key %% ~ 4" ECHO-Zielmuster:% Target% IF / I % 5 == / L DIR% Target% / B / S IF / I % 5 == / DEL DEL / F / S / Q% Ziel% GOTO Ende: Ende
Prozess automatisieren
Der Befehl FORFILES ist für Windows systemeigen. Das DeleteByDatePattern-Skript sollte jedoch in einem Ordner abgelegt werden, der in Ihrer Path-Variablen definiert ist (z. B. in Ihrem Windows-Ordner), so dass es aufgerufen werden kann, als wäre es ein systemeigener Befehl. Anschließend können Sie eine geplante Task erstellen, bei der es sich entweder um einen einzelnen Befehl (wenn Sie nur von einem einzigen Speicherort löschen müssen) oder um eine Stapeldatei (wenn Sie von mehreren Speicherorten aus löschen müssen) ausgeführt wird, die täglich, wöchentlich und monatlich ausgeführt wird oder wann immer.
Eine weitere Sache, die Sie einstellen und vergessen können.
Links
Laden Sie das Delete By Date Pattern-Skript von Sysadmin Geek herunter