Trang chủ » làm thế nào để » Tự động hóa quá trình xóa các tệp nhật ký cũ

    Tự động hóa quá trình xóa các tệp nhật ký cũ

    Nhiều dịch vụ và chương trình ngoài đó tạo ra các tệp nhật ký như một bản kiểm toán cho mọi thứ chúng đang làm, tuy nhiên một số ít có chức năng loại bỏ các tệp này khi chúng tồn tại lâu hơn tính hữu dụng của chúng. Kết quả là, các tệp nhật ký này nằm trên hệ thống của bạn chiếm hết dung lượng (đôi khi nhiều hơn bạn biết) và các thư mục lộn xộn cho những lúc bạn cần truy cập chúng.

    Vì vậy, nếu bạn không cần những tập tin này, tại sao phải giữ chúng? Chúng tôi sẽ chỉ cho bạn cách dễ dàng xóa các tệp nhật ký cũ này để giữ cho hệ thống của bạn đẹp và gọn gàng.

    Tất nhiên, trong khi chúng tôi trình bày dưới đây ngay lập tức hữu ích để quản lý các tệp nhật ký, bạn cũng có thể áp dụng các kỹ thuật tương tự cho bất kỳ loại tệp nào hết hạn sử dụng khác (như sao lưu).

    Xóa tệp dựa trên ngày sửa đổi cuối cùng

    Nếu bạn muốn xóa các tệp nhật ký hiện tại của mình chỉ dựa vào ngày sửa đổi cuối cùng của tệp, tất cả những gì bạn phải làm là sử dụng lệnh FORFILES. Ví dụ:

    FORFILES / P Lối C: LogFiles Hồi / S / D -7 / C vào CMD / C DEL / F / Q @PATH

    Lệnh trên sẽ xóa tất cả các tệp khỏi thư mục của C C: LogFiles và tất cả các thư mục con chưa được sửa đổi trong tuần trước.

    Lệnh FORFILES khá linh hoạt với các mẫu tìm kiếm và các hàm ngày. Ví dụ: thay cho số, bạn có thể nhập một ngày, chẳng hạn như '-1/13/2010' để xóa các tệp được sửa đổi lần cuối trước ngày được chỉ định.

    Để có được tất cả các chi tiết về những gì FORFILES có thể làm, hãy xem trợ giúp trực tuyến bằng cách sử dụng lệnh sau từ dấu nhắc lệnh:

    HÌNH THỨC /?

    Xóa tệp dựa trên mẫu ngày trong tên tệp

    Nhiều ứng dụng và dịch vụ tạo ra các tệp nhật ký dựa trên mẫu ngày để có một tệp nhật ký mỗi ngày (ví dụ: Log100113.txt, Backup-2010-01-13.zip, v.v.). Đối với các loại tệp này, tốt nhất là xóa dựa trên ngày của tệp được tích hợp vào tên tệp thay vì ngày sửa đổi cuối cùng. Điều này hữu ích cho các tình huống như giữ tất cả các tệp nhật ký trong 3 tháng qua. Thật không may, Windows không có lệnh gốc với loại logic này nhưng với tập lệnh bó chúng ta có thể dễ dàng xử lý tác vụ này.

    Có các ví dụ được bao gồm trong các nhận xét sử dụng trên tập lệnh, vì vậy nó khá dễ để tìm ra.

    Kịch bản

    @ECHO TẮT ECHO Xóa theo mẫu ngày ECHO Viết bởi: Jason Faulkner ECHO SysadminGeek.com ECHO. ECHO. REM Xóa / Chọn tệp dựa trên ngày sử dụng MM và / hoặc DD cho các mẫu đặt tên tệp. Cách sử dụng REM REM: REM DeleteByDatePotype / M | / D NumberToKeep Path PatternPrefix PatternPostfix [/ L | / DEL] REM / M Chỉ định mẫu đang được sử dụng dựa trên tháng. REM / D Chỉ định mẫu đang được sử dụng dựa trên ngày. REM NumberToKeep REM Số tháng (/ M) hoặc ngày (/ D) cần giữ, bao gồm cả hiện tại. REM Ví dụ: nhập 1 chỉ giữ tháng / ngày hiện tại và 6 sẽ giữ mức trừ hiện tại 5. Đường dẫn REM Vị trí gốc để tìm kiếm. Các thư mục con sẽ được tìm kiếm. REM PatternPrefix REM Mẫu tìm kiếm tệp được đặt trước tháng / ngày khi xây dựng chuỗi tìm kiếm. REM PatternPostfix REM Mẫu tìm kiếm tệp được đặt sau tháng / ngày khi xây dựng chuỗi tìm kiếm. REM / L (tùy chọn) Liệt kê tất cả các tệp khớp với mẫu, nhưng không xóa chúng. REM / DEL (tùy chọn) Xóa tất cả các tệp khớp với mẫu. Ví dụ REM REM: REM DeleteByDatePotype / M 3 "% WinDir% system32LogFiles" ex ?? ??. log / DEL REM Xóa tất cả các tệp nhật ký IIS (Windows Server 2003) ngoại trừ hai tháng hiện tại và trước đó. REM DeleteByDatePotype / D 7 "D: Sao lưu" * - ???? - ?? - .zip / DEL REM Xóa tất cả các tệp zip khỏi thư mục D: Sao lưu trừ tuần hiện tại. REM Mẫu tên tệp được giả định ở trên là "* -YYYY-MM-DD.zip" REM DeleteByDatePotype / M 0 "C:" * () * / L REM In danh sách tất cả các tệp trên ổ C khớp với mẫu: " * -MM- * "(trong đó MM được thay thế bằng 01-12) REM XóaByDatePotype / D 14" C: Nhật ký "Nhật ký - ???? .txt REM In danh sách tất cả các mẫu sẽ được xử lý bởi tập lệnh. SETLOCAL EnableExtensions EnableDelayedExpansion REM Giả sử cài đặt Ngày / Giờ Windows của bạn được đặt thành định dạng 'DayOfWeek M / D / YYYY'. REM Nếu định dạng của bạn khác, bạn sẽ cần thay đổi các biến bên dưới để chúng căn chỉnh. Mã thông báo FOR / F "= 1,2,3,4 delims = /" %% A IN ('DATE / T') DO (Tháng TẬP = %% B SET Ngày = %% C SET Năm = %% D) NẾU / I % 1 == / M (SET Keep =% Tháng% SET Max = 12) IF / I % 1 == / D (SET Keep =% Day% SET Max = 31 REM Làm việc ngoài các ngày tối đa của tháng trước. SET / A PrevMonth =% Tháng% -1 IF! PrevMonth! THIẾT BỊ 2 (SET Max = 28 REM Leap năm khi thêm nhiều hơn khi cần thiết. IF / I% Năm% THIẾT BỊ 2012 SET Max = 29 IF / I% Năm% THIẾT BỊ 2016 SET Max = 29) IF / I! PrevMonth! THIẾT BỊ 4 SET Max = 30 IF / I! PrevMonth! THIẾT BỊ 6 BỘ Tối đa = 30 IF / I! Trước tháng / I! PrevMonth! THIẾT BỊ 11 BỘ Tối đa = 30) THIẾT LẬP hiện tại =% Giữ% SET / A Keep =% Giữ% -% 2 + 1 REM Xác định phạm vi cần xóa. SET / A RemoveHighStart =% Hiện tại% + 1 IF / I% Giữ% LSS 1 (SET RemoveLow = 0 SET / A RemoveHighEnd =% Giữ% +% Max% -1) ELSE (SET / A RemoveLow =% Keep% -1 SET RemoveHighEnd =% Max%) REM Xử lý tất cả ít hơn phạm vi thấp. FOR / L %% Z IN (1,1,% RemoveLow%) DO GỌI: Quá trình %% Z% 3% 4% 5% 6 REM Quá trình lớn hơn phạm vi cao. FOR / L %% Z IN (% RemoveHighStart%, 1,% RemoveHighEnd%) DO GỌI: Quá trình %% Z% 3% 4% 5% 6 ENDLOCAL GOTO Kết thúc: Khóa SET = 0% 1 Khóa phím =% ~ -2% SET Target = "% ~ 2% ~ 3% Key %% ~ 4" Mẫu mục tiêu ECHO:% Target% IF / I % 5 == / L DIR% Target% / B / S IF / Tôi % 5 == / DEL DEL / F / S / Q% Target% GOTO End: Kết thúc

    Tự động hóa quá trình

    Lệnh FORFILES có nguồn gốc từ Windows, tuy nhiên tập lệnh DeleteByDatePotype nên được đặt trong một thư mục được xác định trong biến Đường dẫn của bạn (chẳng hạn như thư mục Windows của bạn) để có thể được gọi như thể đó là lệnh gốc. Khi điều này được thực hiện, bạn có thể tạo một tác vụ theo lịch là một lệnh duy nhất (nếu bạn chỉ cần xóa từ một vị trí) hoặc một tệp bó (nếu bạn cần xóa từ nhiều vị trí) chạy hàng ngày, hàng tuần, hàng tháng hoặc bất cứ khi nào.

    Một điều nữa bạn có thể thiết lập và quên.

    Liên kết

    Tải xuống tập lệnh Xóa theo ngày mẫu từ Sysadmin Geek