If-Koubou

Mengotomasi Proses Menghapus File Log Lama

Mengotomasi Proses Menghapus File Log Lama (Bagaimana caranya)

Banyak layanan dan program di luar sana menghasilkan file-file log sebagai jejak audit untuk semua yang mereka lakukan, namun hanya sedikit yang memiliki fungsi yang menghapus file-file ini karena mereka lebih awet dari kegunaannya. Akibatnya, file-file log ini duduk di sistem Anda memakan ruang (kadang-kadang lebih dari yang Anda tahu) dan direktori yang berantakan untuk kali-kali Anda perlu mengaksesnya.

Jadi jika Anda tidak membutuhkan file-file ini, mengapa menyimpannya? Kami akan menunjukkan kepada Anda cara mudah menghapus file log lama ini agar sistem Anda tetap bagus dan rapi.

Tentu saja, sementara yang kita bahas di bawah ini segera berguna untuk mengelola file-file log, Anda juga dapat menerapkan teknik yang sama untuk jenis lain "kedaluwarsa" file (seperti backup).

Hapus File Berdasarkan Tanggal Terakhir Dimodifikasi

Jika Anda ingin menghapus file log yang ada hanya berdasarkan tanggal modifikasi terakhir dari file, yang harus Anda lakukan adalah menggunakan perintah FORFILES. Sebagai contoh:

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

Perintah di atas akan menghapus semua file dari folder "C: LogFiles", dan semua sub-folder yang belum dimodifikasi dalam seminggu terakhir.

Perintah FORFILES cukup fleksibel dengan pola pencarian dan fungsi tanggal. Misalnya, sebagai pengganti angka, Anda dapat memasukkan tanggal seperti '-1/13/2010' untuk menghapus file yang terakhir diubah sebelum tanggal yang ditentukan.

Untuk mendapatkan semua rincian tentang apa yang FORFILES dapat lakukan, lihat bantuan online menggunakan perintah berikut dari command prompt:

FORFILES /?

Hapus File Berdasarkan Pola Tanggal di Nama File

Banyak aplikasi dan layanan menghasilkan file log berdasarkan pola tanggal untuk memiliki satu file log per hari (yaitu Log100113.txt, Backup-2010-01-13.zip, dll.). Untuk jenis file ini, lebih baik untuk menghapus berdasarkan tanggal file dimasukkan ke dalam nama file daripada tanggal modifikasi terakhir. Ini berguna untuk skenario seperti menyimpan semua file log selama 3 bulan terakhir. Sayangnya, Windows tidak memiliki perintah asli dengan jenis logika ini tetapi dengan skrip batch kita dapat dengan mudah menangani tugas ini.

Ada beberapa contoh yang disertakan dalam komentar penggunaan pada skrip, jadi seharusnya cukup mudah untuk diketahui.

Naskah

@ECHO OFF ECHO Hapus Berdasarkan Tanggal Pola ECHO Ditulis oleh: Jason Faulkner ECHO SysadminGeek.com ECHO. GEMA. Hapus REM / Pilih file berdasarkan tanggal yang menggunakan MM dan / atau DD untuk pola penamaan file. REM REM Usage: REM DeleteByDatePattern / M | / D NumberToKeep Path PatternPrefix PatternPostfix [/ L | / DEL] REM / M Menentukan pola yang digunakan berdasarkan bulan. REM / D Menentukan pola yang digunakan berdasarkan hari. REM NumberToKeep REM Jumlah bulan (/ M) atau hari (/ D) untuk disimpan, termasuk arus. REM Misalnya, memasukkan 1 hanya menyimpan bulan / hari saat ini dan 6 akan tetap minus saat ini 5. Jalur REM Lokasi root untuk mencari. Subdirektori akan dicari. REM PatternPrefix REM Pola pencarian file ditempatkan sebelum bulan / hari ketika membangun string pencarian. REM PatternPostfix REM Pola pencarian file ditempatkan setelah bulan / hari ketika membangun string pencarian. REM / L (opsional) Mencantumkan semua file yang cocok dengan pola, tetapi tidak menghapusnya. REM / DEL (opsional) Menghapus semua file yang cocok dengan pola. REM REM Contoh: REM DeleteByDatePattern / M 3 "% WinDir% system32LogFiles" ex ?? ?? .log / DEL REM Menghapus semua file log IIS (Windows Server 2003) kecuali untuk dua bulan saat ini dan sebelumnya. REM DeleteByDatePattern / D 7 "D: Backup" * - ???? - ?? - .zip / DEL REM Hapus semua file zip dari D: folder Backup kecuali untuk minggu ini. REM Pola nama file yang diasumsikan di atas adalah "* -YYYY-MM-DD.zip" REM DeleteByDatePattern / M 0 "C:" * () * / L REM Mencetak daftar semua file pada drive C yang cocok dengan pola: " * -MM- * "(di mana MM diganti dengan 01-12) REM DeleteByDatePattern / D 14" C: Log "Log - ???? .txt REM Mencetak daftar semua pola yang akan diproses oleh skrip. SETLOCAL EnableExtensions EnableDelayedExpansion REM Asumsi pengaturan Tanggal / Waktu Windows Anda diatur ke format 'DayOfWeek M / D / YYYY'. REM Jika format Anda berbeda, Anda perlu mengubah variabel di bawah sehingga mereka sejajar. FOR / F "token = 1,2,3,4 delims = /" %% A IN ('DATE / T') DO (SET Month = %% B SET Day = %% C SET Tahun = %% D) IF / I % 1 == / M (SET Keep =% Month% SET Max = 12) IF / I % 1 == / D (SET Keep =% Day% SET Max = 31 REM Working dari hari maksimal bulan sebelumnya, SET / A PrevMonth =% Bulan% -1 IF! PrevMonth! EQU 2 (SET Max = 28 REM Leap tahun… tambahkan lagi sesuai kebutuhan. IF / I% Tahun% EQU 2012 SET Max = 29 IF / I% Tahun% 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 Tentukan rentang yang akan dihapus. 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 semua kurang dari kisaran rendah. FOR / L %% Z IN (1,1,% RemoveLow%) DO CALL: Proses %% Z% 3% 4% 5% 6 REM Proses semua lebih besar dari kisaran tinggi. FOR / L %% Z IN (% RemoveHighStart%, 1,% RemoveHighEnd%) DO CALL: Process %% Z% 3% 4% 5% 6 ENDLOCAL GOTO End: Kunci SET Proses = 0% 1 SET Key =% Key: ~ -2% SET Target = "% ~ 2% ~ 3% Key %% ~ 4" Pola Target ECHO:% Target% IF / I % 5 == / L DIR% Target% / B / S IF / I % 5 == / DEL DEL / F / S / Q% Target% GOTO End: End

Mengotomatiskan Proses

Perintah FORFILES adalah asli untuk Windows, namun script DeleteByDatePattern harus ditempatkan dalam folder yang didefinisikan dalam variabel Path Anda (seperti folder Windows Anda) sehingga dapat dipanggil seolah-olah itu adalah perintah asli. Setelah ini selesai, Anda dapat membuat tugas terjadwal yang merupakan perintah tunggal (jika Anda hanya perlu menghapus dari satu lokasi) atau file batch (jika Anda perlu menghapus dari beberapa lokasi) yang berjalan setiap hari, mingguan, bulanan atau kapan saja.

Satu hal lagi yang bisa Anda atur dan lupakan.

Tautan

Unduh skrip Pola Hapus Berdasarkan Tanggal dari Sysadmin Geek