Connect with us

Wie man

Automatisieren des Prozesses zum Löschen alter Protokolldateien

Viele Dienste und Programme auf dem Markt produzieren Protokolldateien als Audit-Trail für alles, was sie tun, jedoch haben nur wenige eine Funktion, die diese Dateien entfernt, wenn sie ihre Nützlichkeit überdauern. Infolgedessen sitzen diese Protokolldateien auf Ihrem System und verbrauchen Speicherplatz (manchmal mehr als Sie wissen) und überladen Verzeichnisse für die Zeiten, in denen Sie darauf zugreifen müssen.

Wenn Sie diese Dateien nicht benötigen, warum sollten Sie sie behalten? Wir zeigen Ihnen, wie Sie diese alten Protokolldateien einfach entfernen können, um Ihr System sauber und ordentlich zu halten.

Natürlich sind die im Folgenden behandelten Verfahren für die Verwaltung von Protokolldateien sofort nützlich, Sie können die gleichen Techniken jedoch auch auf jede andere Art von „ablaufenden“ Dateien (z. B. Backups) anwenden.

Dateien basierend auf dem Datum der letzten Änderung entfernen

Wenn Sie Ihre bestehenden Protokolldateien ausschließlich basierend auf dem Datum der letzten Änderung der Datei löschen möchten, müssen Sie nur den Befehl FORFILES verwenden. Zum Beispiel:

FORFILES /P „C:LogFiles“ /S /D -7 /C „CMD /C DEL /F /Q @PATH“

Der obige Befehl würde alle Dateien aus dem Ordner „C:LogFiles“ und alle Unterordner löschen, die in der letzten Woche nicht geändert wurden.

Der Befehl FORFILES ist mit den Suchmuster- und Datumsfunktionen ziemlich flexibel. Anstelle einer Zahl können Sie beispielsweise ein Datum wie «-13.01.2010» eingeben, um Dateien zu löschen, die vor dem angegebenen Datum zuletzt geändert wurden.

Um alle Details zu den Funktionen von FORFILES zu erhalten, rufen Sie die Online-Hilfe mit dem folgenden Befehl an der Eingabeaufforderung auf:

FORDATEIEN /?

Dateien basierend auf einem Datumsmuster im Dateinamen entfernen

Viele Anwendungen und Dienste erstellen Protokolldateien basierend auf einem Datumsmuster, um eine Protokolldatei pro Tag zu haben (dh Log100113.txt, Backup-2010-01-13.zip usw.). Bei diesen Dateitypen ist es vorzuziehen, basierend auf dem Datum der Datei, die in den Dateinamen eingefügt wurde, anstatt nach dem Datum der letzten Änderung zu löschen. Dies ist nützlich für Szenarien wie das Aufbewahren aller Protokolldateien der letzten 3 Monate. Leider hat Windows keinen nativen Befehl mit dieser Art von Logik, aber mit einem Batch-Skript können wir diese Aufgabe problemlos bewältigen.

In den Kommentaren zur Verwendung des Skripts sind Beispiele enthalten, sodass es ziemlich einfach sein sollte, dies herauszufinden.

Das Skript

@ECHO OFF
ECHO Delete By Date Pattern
ECHO Written by: Jason Faulkner
ECHO SysadminGeek.com
ECHO.
ECHO.

REM Delete/Select files based on a date which utilizes MM and/or DD for file naming patterns.
REM
REM Usage:
REM DeleteByDatePattern {/M | /D} NumberToKeep Path PatternPrefix PatternPostfix [/L | /DEL]
REM    /M     Specifies the pattern being used is based on months.
REM    /D     Specifies the pattern being used is based on days.
REM    NumberToKeep
REM           The number of months (/M) or days (/D) to keep, including the current.
REM           For example, entering 1 keeps only the current month/day and 6 would keep the current minus 5.
REM    Path   The root location to search. Subdirectories will be searched.
REM    PatternPrefix
REM           The file search pattern placed before of the month/day when building the search string.
REM    PatternPostfix
REM           The file search pattern placed after of the month/day when building the search string.
REM    /L     (optional) Lists all files matching the pattern, but does not delete them.
REM    /DEL   (optional) Deletes all files matching the pattern.
REM
REM Examples:
REM    DeleteByDatePattern /M 3 "%WinDir%system32LogFiles" ex?? ??.log /DEL
REM       Deletes all IIS log files (Windows Server 2003) except for the current and previous two months.
REM    DeleteByDatePattern /D 7 "D:Backup" *-????-??- .zip /DEL
REM       Deletes all zip files from the D:Backup folder except for the current week.
REM       The file name pattern assumed above is "*-YYYY-MM-DD.zip"
REM    DeleteByDatePattern /M 0 "C:" *( )* /L
REM       Prints a list of all files on the C drive matching the pattern: "*-MM-*" (where MM is replaced with 01-12)
REM    DeleteByDatePattern /D 14 "C:Logs" Log-???? .txt
REM       Prints a list of all patterns which would be processed by the script.

SETLOCAL EnableExtensions EnableDelayedExpansion

REM Assumes your Windows Date/Time settings are set to 'DayOfWeek M/D/YYYY' format.
REM If your format is different, you will need to alter the variables below so they align.
FOR /F "tokens=1,2,3,4 delims=/ " %%A IN ('DATE /T') DO (
   SET Month=%%B
   SET Day=%%C
   SET Year=%%D
)

IF /I {%1}=={/M} (
   SET Keep=%Month%
   SET Max=12
)
IF /I {%1}=={/D} (
   SET Keep=%Day%
   SET Max=31
   REM Working off of the previous month's max days.
   SET /A PrevMonth=%Month%-1
   IF !PrevMonth! EQU 2 (
      SET Max=28
      REM Leap years... add more as needed.
      IF /I %Year% EQU 2012 SET Max=29
      IF /I %Year% 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 Determine the range to be removed.
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 Process all less than the low range.
FOR /L %%Z IN (1,1,%RemoveLow%) DO CALL :Process %%Z %3 %4 %5 %6
REM Process all greater than the high range.
FOR /L %%Z IN (%RemoveHighStart%,1,%RemoveHighEnd%) DO CALL :Process %%Z %3 %4 %5 %6

ENDLOCAL
GOTO End

:Process
SET Key=0%1
SET Key=%Key:~-2%
SET Target="%~2%~3%Key%%~4"
ECHO Target Pattern: %Target%

IF /I {%5}=={/L} DIR %Target% /B /S
IF /I {%5}=={/DEL} DEL /F /S /Q %Target%
GOTO End

:End

Automatisieren des Prozesses

Der FORFILES-Befehl ist nativ in Windows, das Skript DeleteByDatePattern sollte jedoch in einem Ordner abgelegt werden, der in Ihrer Path-Variablen definiert ist (z. B. Ihrem Windows-Ordner), damit es wie ein nativer Befehl aufgerufen werden kann. Sobald dies erledigt ist, können Sie eine geplante Aufgabe erstellen, die entweder ein einzelner Befehl ist (wenn Sie nur von einem einzigen Ort löschen müssen) oder eine Batchdatei (wenn Sie von mehreren Orten löschen müssen), die täglich, wöchentlich oder monatlich ausgeführt wird oder wann immer.

Noch eine Sache, die Sie einstellen und vergessen können.

Links

Laden Sie das Skript zum Löschen nach Datumsmuster von Sysadmin Geek herunter

Continue Reading
Click to comment

Leave a Reply

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Tendencia