在服务器的管理中,日志的归档也是工作中重要的部分。日志膨胀不仅会浪费磁盘空间,严重时甚至导致系统崩溃。

使用下面的批处理配合计划任务,将会使管理日志自动化。下面的脚本采用保留最近7天的日志留作查看,其他的压缩备份,保留最近2个月的日志。

1.复制代码另存为compresslogs.bat

  1. @echo off  
  2.  
  3. rem 以下是forfiles注释  
  4. rem /p Path表明要从哪里开始搜索  
  5. rem /m SearchMask按照SearchMask搜索文件,默认*.*  
  6. rem /s指示forfiles在子目录中搜索。  
  7. rem /d与当前日期的差值,+5为后5天,-5为前5天  
  8. rem /c在每个文件上运行指定的Command  
  9. rem /m SearchMask按照 SearchMask 搜索文件,默认*.*  
  10.  
  11. rem 以下是winrar参数注释  
  12. rem a添加文件到压缩文件  
  13. rem -m5设置压缩级别(0-存储...3-默认...5-最大)  
  14. rem -df压缩后删除文件  
  15. rem -ep从名称中排除路径  
  16.  
  17. rem 调用C:\Program Files\WinRAR\Rar.exe将E:\logs目录下7天前所有的*.log文件(含子目录文件)用winrar进行压缩,压缩率为最大,压缩后删除源文件。  
  18. for /f "tokens=1" %%a in ('forfiles /P E:\logs /M "*.log" /S /D -7 /C "cmd /c echo @path"') do "C:\Program Files\WinRAR\Rar.exe" a -m5 -df -ep %%a.rar %%a  
  19.  
  20. rem 删除E:\logs目录下60天前备份的rar文件。  
  21. for /f "tokens=1" %%a in ('forfiles /P E:\logs /M "*.rar" /S /D -60 /C "cmd /c echo @path"') do del %%a  
  22.  
  23. pause>nul0> 

2.1使用下面的bat将compresslogs.bat添加到计划任务,使用system权限。

SCHTASKS /Create /tn CompressLogs /tr D:\CompressLogs.bat /ru SYSTEM /sc DAILY /st 03:30:00

rem /tn CompressLogs定义计划任务名字为CompressLogs

rem /tr D:\CompressLogs.bat定义计划任务程序执行路径

rem /ru SYSTEM定义使用system执行该程序

rem /sc DAILY定义为每日执行

rem /st 03:30:00定义开始时间为凌晨03:30:00

 

2.2或者你也可以使用vbs将compresslogs.bat添加到计划任务,使用system权限。

  1. strComputer = "." 
  2. Set objWMIService = GetObject("winmgmts:" _  
  3.     & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")  
  4.  
  5. Set objNewJob = objWMIService.Get("Win32_ScheduledJob")  
  6. strcmd = "cmd /c d:\bat\compresslogs.bat" 
  7.  
  8. errJobCreated = objNewJob.Create _  
  9.     (strcmd, "20100101033000.000000+480", True , 1 OR 2 OR 4 OR 8 OR 16 OR 32 OR 64, , , JobID)   
  10. Wscript.Echo errJobCreated 

注:使用bat和vbs的区别就是bat添加的tasks可以修改,vbs添加的tasks为不可修改状态。