โฮมเพจ » ทำอย่างไร » ทำให้กระบวนการการลบไฟล์บันทึกเก่าโดยอัตโนมัติ

    ทำให้กระบวนการการลบไฟล์บันทึกเก่าโดยอัตโนมัติ

    บริการและโปรแกรมจำนวนมากออกมีไฟล์บันทึกเป็นหลักฐานการตรวจสอบสำหรับทุกสิ่งที่พวกเขากำลังทำ แต่มีไม่กี่คนที่มีฟังก์ชั่นที่จะลบไฟล์เหล่านี้เมื่อพวกเขามีอายุยืนกว่าประโยชน์ของพวกเขา เป็นผลให้ไฟล์บันทึกเหล่านี้อยู่ในระบบของคุณกินพื้นที่ (บางครั้งมากกว่าที่คุณรู้) และไดเรกทอรีที่ยุ่งเหยิงสำหรับเวลาที่คุณต้องการเข้าถึง.

    ดังนั้นหากคุณไม่ต้องการไฟล์เหล่านี้ทำไมต้องเก็บไว้ เราจะแสดงวิธีลบไฟล์บันทึกเก่า ๆ เหล่านี้อย่างง่ายดายเพื่อให้ระบบของคุณดีและเป็นระเบียบ.

    แน่นอนว่าแม้ว่าเราจะครอบคลุมด้านล่างนี้มีประโยชน์ในการจัดการไฟล์บันทึกทันที แต่คุณสามารถใช้เทคนิคเดียวกันกับไฟล์“ หมดอายุ” ประเภทอื่น ๆ (เช่นการสำรองข้อมูล).

    ลบไฟล์ตามวันที่แก้ไขล่าสุด

    หากคุณต้องการล้างไฟล์บันทึกที่มีอยู่ตามวันที่แก้ไขไฟล์ล่าสุดสิ่งที่คุณต้องทำคือใช้คำสั่ง FORFILES ตัวอย่างเช่น:

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

    คำสั่งดังกล่าวจะลบไฟล์ทั้งหมดจากโฟลเดอร์“ C: LogFiles” และโฟลเดอร์ย่อยทั้งหมดที่ยังไม่ได้แก้ไขในสัปดาห์ที่ผ่านมา.

    คำสั่ง FORFILES นั้นค่อนข้างยืดหยุ่นด้วยรูปแบบการค้นหาและฟังก์ชั่นวันที่ ตัวอย่างเช่นแทนที่ตัวเลขคุณสามารถป้อนวันที่เช่น '-1/13/2010' เพื่อลบไฟล์ที่แก้ไขล่าสุดก่อนวันที่ที่ระบุ.

    หากต้องการรับรายละเอียดทั้งหมดเกี่ยวกับสิ่งที่ FORFILES สามารถทำได้ให้ดูวิธีใช้ออนไลน์โดยใช้คำสั่งต่อไปนี้จากพรอมต์คำสั่ง:

    กองกำลัง /?

    ลบไฟล์ตามรูปแบบวันที่ในชื่อไฟล์

    แอปพลิเคชันและบริการจำนวนมากจัดทำไฟล์บันทึกตามรูปแบบวันที่ซึ่งมีไฟล์บันทึกหนึ่งไฟล์ต่อวัน (เช่น Log100113.txt, Backup-2010-01-13.zip เป็นต้น) สำหรับไฟล์ประเภทนี้ควรลบตามวันที่ของไฟล์ที่รวมอยู่ในชื่อไฟล์แทนที่จะเป็นวันที่แก้ไขล่าสุด สิ่งนี้มีประโยชน์สำหรับสถานการณ์ต่างๆเช่นการเก็บล็อกไฟล์ทั้งหมดในช่วง 3 เดือนที่ผ่านมา น่าเสียดายที่ Windows ไม่มีคำสั่งพื้นฐานด้วยตรรกะชนิดนี้ แต่ด้วยชุดสคริปต์เราสามารถจัดการงานนี้ได้อย่างง่ายดาย.

    มีตัวอย่างที่รวมอยู่ในความคิดเห็นการใช้งานสคริปต์ดังนั้นควรเข้าใจได้ง่าย.

    สคริปต์

    @ECHO OFF ECHO ลบตามรูปแบบวันที่ ECHO เขียนโดย: Jason Faulkner ECHO SysadminGeek.com ECHO ECHO REM ลบ / เลือกไฟล์ตามวันที่ซึ่งใช้ MM และ / หรือ DD สำหรับรูปแบบการตั้งชื่อไฟล์ การใช้ REM REM: REM DeleteByDatePattern / M | / D NumberToKeep Path PatternPrefix PatternPostfix [/ L | / DEL] REM / M ระบุรูปแบบที่จะใช้ขึ้นอยู่กับเดือน REM / D ระบุรูปแบบที่จะใช้ขึ้นอยู่กับจำนวนวัน REM NumberToKeep REM จำนวนเดือน (/ M) หรือวัน (/ D) ที่จะเก็บรวมถึงปัจจุบัน REM ตัวอย่างเช่นการป้อน 1 จะเก็บเฉพาะเดือน / วันปัจจุบันและ 6 จะเก็บเครื่องหมายลบปัจจุบัน 5. พา ธ REM ตำแหน่งตำแหน่งรูทที่จะค้นหา ไดเรกทอรีย่อยจะถูกค้นหา REM PatternPrefix REM รูปแบบการค้นหาไฟล์ที่วางไว้ก่อนเดือน / วันเมื่อสร้างสตริงการค้นหา REM PatternPostfix REM รูปแบบการค้นหาไฟล์ที่วางหลังจากเดือน / วันเมื่อสร้างสตริงการค้นหา REM / L (เป็นทางเลือก) แสดงรายการไฟล์ทั้งหมดที่ตรงกับรูปแบบ แต่ไม่ได้ลบออก REM / DEL (เป็นทางเลือก) ลบไฟล์ทั้งหมดที่ตรงกับรูปแบบ ตัวอย่าง REM REM: REM DeleteByDatePattern / M 3 "% WinDir% system32LogFiles" ex ?? ??. log / DEL REM ลบไฟล์บันทึก IIS ทั้งหมด (Windows Server 2003) ยกเว้นปัจจุบันและก่อนหน้านี้สองเดือน REM DeleteByDatePattern / D 7 "D: Backup" * - ???? - ?? - .zip / DEL REM ลบไฟล์ zip ทั้งหมดออกจาก D: โฟลเดอร์สำรองยกเว้นในสัปดาห์ปัจจุบัน REM รูปแบบชื่อไฟล์ที่สมมติข้างต้นคือ "* -YYYY-MM-DD.zip" REM DeleteByDatePattern / M 0 "C:" * () * / L REM พิมพ์รายการไฟล์ทั้งหมดบนไดรฟ์ C ที่ตรงกับรูปแบบ: " * -MM- * "(โดยที่ MM ถูกแทนที่ด้วย 01-12) REM DeleteByDatePattern / D 14" C: บันทึก "บันทึก - ???? .txt REM พิมพ์รายการของรูปแบบทั้งหมดที่สคริปต์ประมวลผล SETLOCAL EnableExtensions EnableDelayedExpansion REM สมมติว่าการตั้งค่า Windows Date / Time ของคุณถูกตั้งค่าเป็นรูปแบบ 'DayOfWeek M / D / YYYY' REM หากรูปแบบของคุณแตกต่างกันคุณจะต้องแก้ไขตัวแปรด้านล่างเพื่อให้สอดคล้องกัน FOR / F "tokens = 1,2,3,4 delims = /" %% A IN ('DATE / T') ทำ (SET เดือน = %% B วัน SET = %% C SET ปี = %% D) IF / I % 1 == / M (SET Keep =% เดือน% SET SET = 12) IF / I % 1 == / D (SET Keep =% Day% SET สูงสุด = 31 REM ทำงาน ออกจากวันที่สูงสุดของเดือนก่อนหน้า SET / A PrevMonth =% เดือน% -1 ถ้าเป็นก่อนหน้า! EQU 2 (SET สูงสุด = 28 REM Leap ปี ... เพิ่มมากขึ้นตามต้องการถ้า / I% ปี% EQU 2012 SET สูงสุด = 29 IF / I% ปี% EQU 2016 SET สูงสุด = 29) IF / I! PrevMonth! EQU 4 SET Max = 30 IF / I! PrevMonth! EQU 6 SET สูงสุด = 30 IF / I! PrevMonth! EQU 9 SET Max = 30 IF ก่อนหน้าถัดไป! EQU 11 SET สูงสุด = 30) SET ปัจจุบัน =% Keep% SET / A Keep =% Keep% -% 2 + 1 REM กำหนดช่วงที่จะลบ SET / A RemoveHighStart =% ปัจจุบัน% + 1 IF / I% เก็บ% LSS 1 (SET RemoveLow = 0 SET / A RemoveHighEnd =% Keep% +% Max% -1) ELSE (SET / A RemoveLow =% Keep% -1 SET RemoveHighEnd =% สูงสุด%) REM ประมวลผลทั้งหมดน้อยกว่าช่วงต่ำ FOR / L %% Z IN (1,1,% RemoveLow%) DO CALL: ประมวลผล %% Z% 3% 4% 5% 6 REM กระบวนการทั้งหมดมากกว่าช่วงสูง FOR / L %% Z IN (% RemoveHighStart%, 1,% RemoveHighEnd%) DO CALL: กระบวนการ %% Z% 3% 4% 5% 6 END GOCO ENDLOCAL End: คีย์ประมวลผลชุด = 0% 1 SET Key =% Key: ~ -2% SET Target = "% ~ 2% ~ 3% Key %% ~ 4" รูปแบบ ECHO เป้าหมาย:% Target% IF / I % 5 == / L DIR% Target% / B / S IF / I % 5 == / DEL DEL / F / S / Q% เป้าหมาย% GOTO สิ้นสุด: สิ้นสุด

    ทำให้กระบวนการอัตโนมัติ

    คำสั่ง FORFILES เป็นแบบเนทีฟสำหรับ Windows อย่างไรก็ตามควรวางสคริปต์ DeleteByDatePattern ในโฟลเดอร์ที่กำหนดไว้ในตัวแปร Path ของคุณ (เช่นโฟลเดอร์ Windows ของคุณ) เพื่อให้สามารถเรียกใช้ได้ราวกับเป็นคำสั่งพื้นฐาน เมื่อเสร็จแล้วคุณสามารถสร้างงานที่กำหนดเวลาไว้ซึ่งเป็นทั้งคำสั่งเดียว (ถ้าคุณเพียงแค่ต้องลบออกจากสถานที่เดียว) หรือแบทช์ไฟล์ (ถ้าคุณต้องการที่จะลบจากหลายสถานที่) ซึ่งทำงานรายวันรายสัปดาห์รายเดือน หรือเมื่อใดก็ตามที่.

    อีกสิ่งหนึ่งที่คุณสามารถตั้งค่าและลืม.

    การเชื่อมโยง

    ดาวน์โหลดสคริปต์ลบตามวันที่จาก Sysadmin Geek