Homepage » come » Automatizzazione del processo di eliminazione dei vecchi file di registro

    Automatizzazione del processo di eliminazione dei vecchi file di registro

    Molti servizi e programmi là fuori producono file di log come traccia di controllo per tutto ciò che stanno facendo, tuttavia pochi hanno una funzione che rimuove questi file mentre sopravvivono alla loro utilità. Di conseguenza, questi file di registro si trovano sul tuo sistema divorando spazio (a volte più di quanto sai) e le directory ingombranti per quelle volte che devi accedervi.

    Quindi se non hai bisogno di questi file, perché tenerli? Vi mostreremo come rimuovere facilmente questi vecchi file di registro per mantenere il vostro sistema piacevole e ordinato.

    Ovviamente, mentre le informazioni che seguono sono immediatamente utili per la gestione dei file di registro, è possibile applicare le stesse tecniche anche a qualsiasi altro tipo di file "in scadenza" (come i backup).

    Rimuovi file in base alla data dell'ultima modifica

    Se si desidera cancellare i file di registro esistenti basandosi esclusivamente sull'ultima data di modifica del file, tutto ciò che si deve fare è utilizzare il comando FORFILES. Per esempio:

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

    Il comando precedente eliminerebbe tutti i file dalla cartella "C: LogFiles" e tutte le sottocartelle che non sono state modificate nell'ultima settimana.

    Il comando FORFILES è piuttosto flessibile con il modello di ricerca e le funzioni di data. Ad esempio, al posto di un numero, è possibile inserire una data come '-1/13/2010' per cancellare i file modificati prima della data specificata.

    Per ottenere tutti i dettagli su ciò che FORFILES può fare, visualizzare la guida in linea utilizzando il seguente comando dal prompt dei comandi:

    FORFILI /?

    Rimuovi i file in base a un pattern data nel nome file

    Molte applicazioni e servizi producono file di registro in base a un modello di data in modo da avere un file di registro al giorno (ad esempio Log100113.txt, Backup-2010-01-13.zip, ecc.). Per questi tipi di file, è preferibile eliminare in base alla data del file incorporato nel nome del file anziché alla data dell'ultima modifica. Questo è utile per scenari come mantenere tutti i file di registro per gli ultimi 3 mesi. Sfortunatamente, Windows non ha un comando nativo con questo tipo di logica, ma con uno script batch possiamo facilmente gestire questa attività.

    Ci sono esempi inclusi nei commenti di utilizzo sullo script, quindi dovrebbe essere abbastanza facile da capire.

    Il copione

    @ECHO OFF ECHO Elimina per data Pattern ECHO Scritto da: Jason Faulkner ECHO SysadminGeek.com ECHO. ECO. REM Elimina / Seleziona i file in base a una data che utilizza MM e / o DD per i modelli di denominazione dei file. REM REM Uso: REM DeleteByDatePattern / M | / D NumberToKeep Path PatternPrefix PatternPostfix [/ L | / DEL] REM / M Specifica che il modello utilizzato è basato su mesi. REM / D Specifica che il modello utilizzato è basato su giorni. REM NumberToKeep REM Il numero di mesi (/ M) o giorni (/ D) da conservare, compreso il corrente. REM Ad esempio, l'immissione di 1 mantiene solo il mese / giorno corrente e 6 terrebbe l'attuale meno 5. Percorso REM La posizione principale da cercare. Saranno ricercate sottodirectory. REM PatternPrefix REM Il modello di ricerca file inserito prima del mese / giorno durante la creazione della stringa di ricerca. REM PatternPostfix REM Il modello di ricerca file inserito dopo il mese / giorno durante la creazione della stringa di ricerca. REM / L (opzionale) Elenca tutti i file che corrispondono allo schema, ma non li elimina. REM / DEL (opzionale) Elimina tutti i file che corrispondono al modello. Esempi REM REM: REM DeleteByDatePattern / M 3 "% WinDir% system32LogFiles" ex ?? ??. log / DEL REM Elimina tutti i file di registro di IIS (Windows Server 2003) ad eccezione dei due mesi attuali e precedenti. REM DeleteByDatePattern / D 7 "D: Backup" * - ???? - ?? - .zip / DEL REM Elimina tutti i file zip dalla cartella D: Backup ad eccezione della settimana corrente. REM Il modello del nome del file assunto sopra è "* -YYYY-MM-DD.zip" REM DeleteByDatePattern / M 0 "C:" * () * / L REM Stampa un elenco di tutti i file sull'unità C corrispondenti al modello: " * -MM- * "(dove MM è sostituito con 01-12) REM DeleteByDatePattern / D 14" C: Log "Log - ???? .txt REM Stampa un elenco di tutti i pattern che verrebbero elaborati dallo script. SETLOCAL EnableExtensions EnableDelayedExpansion REM Presuppone che le impostazioni di Data / Ora di Windows siano impostate sul formato 'DayOfWeek M / D / YYYY'. REM Se il tuo formato è diverso, dovrai modificare le variabili sottostanti in modo che si allineino. FOR / F "token = 1,2,3,4 delimi = /" %% A IN ('DATE / T') DO (SET Mese = %% B SET Giorno = %% C SET Anno = %% D) IF / I % 1 == / M (SET Keep =% Month% SET Max = 12) IF / I % 1 == / D (SET Keep =% Day% SET Max = 31 REM Working al largo dei giorni massimi del mese precedente SET / A PrevMonth =% Month% -1 IF! PrevMonth! EQU 2 (SET Max = 28 REM Leap years ... aggiungi altro se necessario. IF / I% Year% EQU 2012 SET Max = 29 IF / I% Anno% 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 Determina l'intervallo da rimuovere. 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 Elabora tutto meno dell'intervallo basso. FOR / L %% Z IN (1,1,% RimuoviLow%) DO CALL: Processo %% Z% 3% 4% 5% 6 REM Elabora tutto superiore all'intervallo alto. FOR / L %% Z IN (% RemoveHighStart%, 1,% RemoveHighEnd%) DO CALL: Processo %% 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

    Automatizzare il processo

    Il comando FORFILES è nativo di Windows, tuttavia lo script DeleteByDatePattern deve essere inserito in una cartella definita nella variabile Path (come la cartella Windows) in modo che possa essere chiamata come se fosse un comando nativo. Una volta eseguita questa operazione, è possibile creare un'attività pianificata, ovvero un singolo comando (se è necessario eliminare da una singola posizione) o un file batch (se è necessario eliminare da più posizioni) che viene eseguito ogni giorno, ogni settimana, ogni mese o quando.

    Un'altra cosa che puoi impostare e dimenticare.

    link

    Scarica la sceneggiatura Elimina per data di Sysadmin Geek