自动删除旧日志文件的过程

许多服务和程序都会生成日志文件,作为它们所做一切的审计跟踪,但是很少有功能能够在这些文件过期时删除它们。结果,这些日志文件在您的系统上占用了空间(有时比您知道的要多),并且在您需要访问它们的时候会使目录变得混乱。...

许多服务和程序都会生成日志文件,作为它们所做一切的审计跟踪,但是很少有功能能够在这些文件过期时删除它们。结果,这些日志文件在您的系统上占用了空间(有时比您知道的要多),并且在您需要访问它们的时候会使目录变得混乱。

如果你不需要这些文件,为什么要保留它们?我们将向您展示如何轻松地删除这些旧的日志文件,以保持系统整洁。

当然,虽然下面介绍的方法对于管理日志文件非常有用,但您也可以将相同的技术应用于任何其他类型的“过期”文件(例如备份)。

根据上次修改日期删除文件

如果只想根据文件的上次修改日期清除现有日志文件,则只需使用FORFILES命令。例如:

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

上面的命令将删除“C:LogFiles”文件夹中的所有文件,以及上周未修改的所有子文件夹。

FORFILES命令对搜索模式和日期函数非常灵活。例如,可以输入诸如“-1/13/2010”之类的日期来代替数字,以删除在指定日期之前最后修改的文件。

要获取有关FORFILES可以执行的操作的所有详细信息,请在命令提示符下使用以下命令查看联机帮助:

FORFILES /?

根据文件名中的日期模式删除文件

许多应用程序和服务根据日期模式生成日志文件,每天只有一个日志文件(即Log100113.txt、Backup-2010-01-13.zip等)。对于这些类型的文件,最好根据文件名中包含的文件的日期而不是最后修改的日期进行删除。这对于保存过去3个月的所有日志文件等场景非常有用。不幸的是,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 EnableExtensi*** 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脚本应该放在Path变量中定义的文件夹中(例如Windows文件夹),这样就可以像调用本机命令一样调用它。完成此操作后,您可以创建一个计划任务,该任务可以是单个命令(如果只需要从单个位置删除),也可以是批处理文件(如果需要从多个位置删除),每天、每周、每月或任何时候运行。

还有一件事你可以忘记。

链接

从Sysadmin Geek下载Delete By Date模式脚本

  • 发表于 2021-04-13 07:25
  • 阅读 ( 59 )
  • 分类:互联网

你可能感兴趣的文章

删除这些windows文件和文件夹以释放磁盘空间

... 除了浪费时间自己做这件事时,你可以自动化的过程,这是更安全的让磁盘清理工具为你做这些清理。这样可以避免意外删除所需的文件或搞乱错误的文件夹。 ...

  • 发布于 2021-03-11 09:22
  • 阅读 ( 369 )

用10个技巧和技巧加速windows

...是大多数用户的最佳选择,因为它会根据您正在做的事情自动调整电源使用情况。选择高性能计划并不能真正提供任何额外的好处。 ...

  • 发布于 2021-03-12 08:31
  • 阅读 ( 242 )

如何阻止hp计算机记录密钥

...用计算机。这强调了保证您安全的基本安全原则:确保您自动安装更新,并使用反恶意软件解决方案击败恶意应用程序。 ...

  • 发布于 2021-03-14 13:19
  • 阅读 ( 208 )

重置或刷新windows10的一个原因是:杂乱

...念更新改变了一切。微软推出了一个新的刷新工具,可以自动下载Windows10的新版本。它是完全免费的OEM软件,并允许您保留您的文件,如果你愿意。 ...

  • 发布于 2021-03-15 03:17
  • 阅读 ( 263 )

mac清洁应用程序一文不值吗?需要考虑的7个因素

...文件系统使用热文件自适应群集和动态碎片整理两个进程自动对文件进行碎片整理。 ...

  • 发布于 2021-03-21 12:01
  • 阅读 ( 181 )

解决wordpress中500个内部服务器错误和空白白页的最终指南

...链接”,在不做任何更改的情况下,单击“保存”。这将自动生成文件的新工作版本。 ...

  • 发布于 2021-03-21 20:31
  • 阅读 ( 286 )

6个macos文件夹,您可以安全删除以节省空间

... 您可以告诉Mail不要自动下载附件,从而进一步节省空间。为此,请选择“邮件”>“首选项”>“帐户”。从左窗格中选择任何一个电子邮件帐户,然后单击右窗格中的帐户信息...

  • 发布于 2021-03-22 03:51
  • 阅读 ( 464 )

如何用testdisk恢复linux上删除的文件

...还需要知道分区类型。它显示一个选项菜单,以及在底部自动检测到的分区类型。 除非有充分的理由不这样做,否则突出显示自动检测到的分区类型,然后按Enter键。 在出现的功能菜单中,突出显示“Advanced”,然后按Enter键。...

  • 发布于 2021-04-01 08:34
  • 阅读 ( 313 )

如何在linux上安全地删除文件

...因与撕碎旧纸质文档的原因相同。我们将告诉您有关安全删除Linux文件的需要了解的内容。本教程介绍了shred命令和secure delete实用程序套件。 删除的文件通常是可恢复的 删除一个文件实际上并不会将其从硬盘中删除。这完全取...

  • 发布于 2021-04-03 10:54
  • 阅读 ( 194 )

outlook中的自动存档是什么?它是如何工作的?

如果您使用过邮箱清理工具,那么您会看到“自动存档”按钮,但您可能会对它的工作方式和功能有所顾虑。下面是它的功能和使用方法。 单击“自动存档”按钮会导致进程在Outlook中的所有文件夹中来回切换,并应用您设置的...

  • 发布于 2021-04-04 05:37
  • 阅读 ( 243 )
cay0405383
cay0405383

0 篇文章

相关推荐