/ / أتمتة عملية حذف ملفات السجل القديم

أتمتة عملية حذف ملفات السجل القديم

العديد من الخدمات والبرامج هناك تنتج سجلالملفات كدقة تدقيق لكل ما يقومون به ، لكن قلة منهم لديهم وظيفة تؤدي إلى إزالة هذه الملفات لأنها تفوق فائدتها. نتيجةً لذلك ، توجد ملفات السجل هذه على نظامك الذي يشغل مساحة أكبر (أكثر مما تعرفه في بعض الأحيان) ويتبدل الأدلة في الأوقات التي تحتاج إلى الوصول إليها.

لذا إذا كنت لا تحتاج إلى هذه الملفات ، فلماذا تحتفظ بها؟ سوف نوضح لك كيفية إزالة ملفات السجل القديمة هذه بسهولة لإبقاء نظامك جميلًا ومرتبًا.

بالطبع ، في حين أن ما نغطيه أدناه مفيد على الفور لإدارة ملفات السجل ، يمكنك أيضًا تطبيق نفس الأساليب على أي نوع آخر من ملفات "منتهية الصلاحية" (مثل النسخ الاحتياطية).

إزالة الملفات بناءً على تاريخ آخر تعديل

إذا كنت تريد مسح ملفات السجل الموجودة لديك استنادًا إلى آخر تاريخ تم تعديله للملف ، فكل ما عليك فعله هو استخدام FORFILES. فمثلا:

FORFILES / P "C: LogFiles" / S / D -7 / C "CMD / C DEL / F / QPATH"

يحذف الأمر أعلاه جميع الملفات من مجلد "C: LogFiles" ، وجميع المجلدات الفرعية التي لم يتم تعديلها في الأسبوع الماضي.

الأمر FORFILES مرن للغاية معنمط البحث والتاريخ وظائف. على سبيل المثال ، بدلاً من الرقم ، يمكنك إدخال تاريخ مثل "-1/13/2010" لحذف الملفات التي تم تعديلها آخر مرة قبل التاريخ المحدد.

للحصول على جميع التفاصيل حول ما يمكن لـ FORFILES القيام به ، قم بعرض المساعدة عبر الإنترنت باستخدام الأمر التالي من موجه الأوامر:

ملفات /؟

إزالة الملفات بناءً على نموذج تاريخ في اسم الملف

تنتج العديد من التطبيقات والخدمات ملفات السجلبناءً على نمط التاريخ بحيث يكون لديك ملف سجل واحد في اليوم (على سبيل المثال ، Log100113.txt ، Backup-2010-01-13.zip ، إلخ). بالنسبة إلى هذه الأنواع من الملفات ، يفضل حذفها بناءً على تاريخ الملف المضمن في اسم الملف بدلاً من آخر تاريخ تم تعديله. هذا مفيد للسيناريوهات مثل الاحتفاظ بجميع ملفات السجل للأشهر الثلاثة الماضية. لسوء الحظ ، ليس لدى Windows أمر أصلي باستخدام هذا النوع من المنطق ، لكن باستخدام نص دفعي يمكننا التعامل بسهولة مع هذه المهمة.

هناك أمثلة مدرجة في تعليقات الاستخدام على البرنامج النصي ، لذلك يجب أن يكون من السهل جداً معرفة ذلك.

النص

@ECHO OFF
ECHO Delete By Date Pattern
ECHO Written by: Jason Faulkner
ECHO SysadminGeek.com
ECHO.
ECHO.
REM Delete/Select files based on a date which utilizes MM and/or DD for file naming patterns.
REM
REM Usage:
REM DeleteByDatePattern {/M | /D} NumberToKeep Path PatternPrefix PatternPostfix [/L | /DEL]
REM    /M     Specifies the pattern being used is based on months.
REM    /D     Specifies the pattern being used is based on days.
REM    NumberToKeep
REM           The number of months (/M) or days (/D) to keep, including the current.
REM           For example, entering 1 keeps only the current month/day and 6 would keep the current minus 5.
REM    Path   The root location to search. Subdirectories will be searched.
REM    PatternPrefix
REM           The file search pattern placed before of the month/day when building the search string.
REM    PatternPostfix
REM           The file search pattern placed after of the month/day when building the search string.
REM    /L     (optional) Lists all files matching the pattern, but does not delete them.
REM    /DEL   (optional) Deletes all files matching the pattern.
REM
REM Examples:
REM    DeleteByDatePattern /M 3 "%WinDir%system32LogFiles" ex?? ??.log /DEL
REM       Deletes all IIS log files (Windows Server 2003) except for the current and previous two months.
REM    DeleteByDatePattern /D 7 "D:Backup" *-????-??- .zip /DEL
REM       Deletes all zip files from the D:Backup folder except for the current week.
REM       The file name pattern assumed above is "*-YYYY-MM-DD.zip"
REM    DeleteByDatePattern /M 0 "C:" *( )* /L
REM       Prints a list of all files on the C drive matching the pattern: "*-MM-*" (where MM is replaced with 01-12)
REM    DeleteByDatePattern /D 14 "C:Logs" Log-???? .txt
REM       Prints a list of all patterns which would be processed by the script.
SETLOCAL EnableExtensions EnableDelayedExpansion
REM Assumes your Windows Date/Time settings are set to 'DayOfWeek M/D/YYYY' format.
REM If your format is different, you will need to alter the variables below so they align.
FOR /F "tokens=1,2,3,4 delims=/ " %%A IN ('DATE /T') DO (
SET Month=%%B
SET Day=%%C
SET Year=%%D
)
IF /I {%1}=={/M} (
SET Keep=%Month%
SET Max=12
)
IF /I {%1}=={/D} (
SET Keep=%Day%
SET Max=31
REM Working off of the previous month's max days.
SET /A PrevMonth=%Month%-1
IF !PrevMonth! EQU 2 (
SET Max=28
REM Leap years... add more as needed.
IF /I %Year% EQU 2012 SET Max=29
IF /I %Year% 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 Determine the range to be removed.
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 all less than the low range.
FOR /L %%Z IN (1,1,%RemoveLow%) DO CALL :Process %%Z %3 %4 %5 %6
REM Process all greater than the high range.
FOR /L %%Z IN (%RemoveHighStart%,1,%RemoveHighEnd%) DO CALL :Process %%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

أتمتة العملية

الأمر FORFILES أصلي لنظام Windows ،ومع ذلك ، يجب وضع البرنامج النصي DeleteByDatePattern في مجلد محدد في متغير المسار الخاص بك (مثل مجلد Windows الخاص بك) حتى يمكن استدعاؤه كما لو كان أمرًا أصليًا. بمجرد الانتهاء من ذلك ، يمكنك إنشاء مهمة مجدولة تكون إما أمر واحد (إذا كنت تحتاج فقط إلى الحذف من موقع واحد) أو ملف دفعي (إذا كنت بحاجة إلى الحذف من مواقع متعددة) يتم تشغيله يوميًا أو أسبوعيًا أو شهريًا أو كلما

شيء آخر يمكنك ضبطه ونسيانه.

الروابط

تحميل حذف حسب التاريخ النصي نمط من مسؤول النظام المهوس