Automatisering af processen med at slette gamle logfiler
Mange tjenester og programmer derude producerer logfiler som et revisionsspor for alt de laver, men få har en funktion, der fjerner disse filer, da de overlever deres anvendelighed. Som følge heraf sidder disse logfiler på dit system, der spiser plads (til tider mere end du kender) og cluttering-mapper til de gange, du har brug for at få adgang til dem.
Så hvis du ikke har brug for disse filer, hvorfor holde dem? Vi skal vise dig, hvordan du nemt kan fjerne disse gamle logfiler for at holde systemet godt og ryddeligt.
Selvom vi dækker nedenfor, er det umiddelbart nyttigt at styre logfiler, men du kan også anvende de samme teknikker til enhver anden type "udløb" fil (f.eks. Sikkerhedskopier).
Fjern filer baseret på sidst ændret dato
Hvis du vil rydde dine eksisterende logfiler, der udelukkende er baseret på den sidste modificerede dato for filen, skal du kun bruge FORFILES-kommandoen. For eksempel:
FORFILER / P "C: LogFiles" / S / D -7 / C "CMD / C DEL / F / Q @PATH"
Ovennævnte kommando ville slette alle filer fra mappen "C: LogFiles" og alle undermapper, der ikke er blevet ændret i den sidste uge.
FORFILES-kommandoen er ret fleksibel med søgemønsteret og datofunktionerne. For eksempel kan du i stedet for et nummer indtaste en dato som '-1/13/2010' for at slette filer, der senest blev ændret før den angivne dato.
For at få alle detaljer om, hvad FORFILES kan gøre, skal du se onlinehjælpen ved at bruge følgende kommando fra kommandoprompten:
FORFILES /?
Fjern filer baseret på et dato mønster i filnavnet
Mange applikationer og tjenester producerer logfiler baseret på et dato mønster for at have en logfil pr. Dag (dvs. Log100113.txt, Backup-2010-01-13.zip, etc.). For disse typer af filer er det bedst at slette baseret på datoen for filen, der er indarbejdet i filnavnet i stedet for den sidste ændrede dato. Dette er nyttigt for scenarier som f.eks. At holde alle logfiler i de seneste 3 måneder. Desværre har Windows ikke en indbygget kommando med denne type logik, men med et batch script kan vi nemt håndtere denne opgave.
Der er eksempler i brugen kommentarer på scriptet, så det skal være ret nemt at finde ud af.
Manuskriptet
@ECHO FRA ECHO Slet Efter Dato Mønster ECHO Skrevet af: Jason Faulkner ECHO SysadminGeek.com ECHO. EKKO. REM Slet / Vælg filer baseret på en dato, der bruger MM og / eller DD til filnavnemønstre. REM REM Anvendelse: REM DeleteByDatePattern / M | / D NumberToKeep Path PatternPrefix PatternPostfix [/ L | / DEL] REM / M Angiver det mønster, der bruges, er baseret på måneder. REM / D Angiver det mønster, der bruges, er baseret på dage. REM NumberToKeep REM Antallet af måneder (/ M) eller dage (/ D) for at holde, inklusive den aktuelle. REM For eksempel indtaster 1 kun den aktuelle måned / dag og 6 vil beholde den nuværende minus 5. REM Path Roten placering for at søge. Underkataloger vil blive søgt. REM PatternPrefix REM Filsøgningsmønsteret placeret før i måneden / dagen, når du opbygger søgestrengen. REM PatternPostfix REM Filsøgningsmønsteret placeret efter måneden / dagen, når du opbygger søgestrengen. REM / L (valgfrit) Viser alle filer, der matcher mønsteret, men sletter ikke dem. REM / DEL (valgfrit) Sletter alle filer, der matcher mønsteret. REM REM Eksempler: REM DeleteByDatePattern / M 3 "% WinDir% system32LogFiles" ex ?? ??. log / DEL REM Sletter alle IIS logfiler (Windows Server 2003) med undtagelse af de nuværende og de foregående to måneder. REM DeleteByDatePattern / D 7 "D: Backup" * - ???? - ?? - .zip / DEL REM Sletter alle zip-filer fra D: Backup-mappen bortset fra den aktuelle uge. REM Filnavnet mønsteret antaget ovenfor er "* -YYYY-MM-DD.zip" REM DeleteByDatePattern / M 0 "C:" * () * / L REM Udskriver en liste over alle filer på C-drevet, der svarer til mønsteret: " * -MM- * "(hvor MM er erstattet med 01-12) REM DeleteByDatePattern / D 14" C: Logs "Log - ???? .txt REM Udskriver en liste over alle mønstre, som ville blive behandlet af scriptet. SETLOCAL EnableExtensions EnableDelayedExpansion REM Forudsætter at dine Windows Date / Time indstillinger er indstillet til 'DayOfWeek M / D / YYYY' format. REM Hvis dit format er anderledes, skal du ændre variablerne nedenfor, så de justeres. FOR / F "tokens = 1,2,3,4 delims = /" %% A IN ('DATO / T') DO (SET Måned = %% B SET DAG = %% C SET År = %% D) IF / I % 1 == / M (SET Keep =% Måned% SET Max = 12) IF / I % 1 == / D (SET Keep =% Dag% SET Max = 31 REM Arbejde ud af den forrige måneds max dage. SET / A PrevMonth =% Måned% -1 IF! PrevMonth! EQU 2 (SET Max = 28 REM Leap år ... tilføj mere efter behov.) IF / I% År% EQU 2012 SET Max = 29 IF / I% År% 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 =% Hold% SET / A Keep =% Hold% -% 2 + 1 REM Bestem det område, der skal fjernes. SET / A RemoveHighStart =% Aktuelt% + 1 IF / I% Hold% LSS 1 (SET FjernLow = 0 SET / A RemoveHighEnd =% Hold% +% Max% -1) ELSE (SET / A RemoveLow =% Hold% -1 SET RemoveHighEnd =% Max%) REM Behandle alle mindre end det lave interval. FOR / L %% Z IN (1,1,% RemoveLow%) KALK: Proces %% Z% 3% 4% 5% 6 REM Behandler alle større end det høje interval. FOR / L %% Z IN (% RemoveHighStart%, 1,% RemoveHighEnd%) INDKALD: Proces %% Z% 3% 4% 5% 6 ENDLOCAL GOTO Slut: Proces SET-tast = 0% 1 SET-tast =% Tast: ~ -2% SET Mål = "% ~ 2% ~ 3% Nøgle %% ~ 4" ECHO Målmønster:% Mål% IF / I % 5 == / L DIR% Mål% / B / S IF / I % 5 == / DEL DEL / F / S / Q% Mål% GOTO Slut: Slut
Automatisering af processen
FORFILES-kommandoen er indbygget i Windows, men scriptet DeleteByDatePattern skal placeres i en mappe, der er defineret i din sti-variabel (f.eks. Din Windows-mappe), så det kan kaldes som om det var en indbygget kommando. Når dette er gjort, kan du oprette en planlagt opgave, som enten er en enkelt kommando (hvis du kun skal slette fra et enkelt sted) eller en batchfil (hvis du skal slette flere steder), som kører dagligt, ugentligt, månedligt eller når.
En ting du kan sætte og glemme.
Links
Download Slet efter dato mønster script fra Sysadmin Geek