找回密码
 立即注册
查看: 5928|回复: 0

IIS日志自动删除程序bat和vbs代码

[复制链接]
发表于 2014-9-10 14:20:26 | 显示全部楼层 |阅读模式
很多使用Windows IIS的站长可能都会遇到这个问题,就是服务器的IIS日志增长经常会导致磁盘空间被占满,而IIS也没有自动删除日志的功能,因此需要经常关注即时清理日志,因此我这里就介绍一个能够自动删除IIS日志的程序。
  这个删除程序的功能很简单,每天自动删除N天前的日志(时间根据情况自己设置,一般设置为30天),可以使用DOS批处理或VBS脚本来实现。
  在下边的解决方案里请大家可以选择适合自己的,总体设计思路是这样的:
  IIS日志文件的格式是:ex年月日.log 比如:ex071116.log
  IIS日志文件存储位置:默认情况下是在:%windir%\system32\LogFiles ,如果您使用的是专业的IIS管理软件,里面一般会让你设置相应日志目录。
  IIS日志清理批处理版:跟据当前时间计算出前N天的日期,比如今天是:2007-11-16,前60天的日期就是2007-9-16(程序可以自动识别30天或31天或润月),然后再处理成20070916这样的格式,然后再组合成ex070916.log这样的IIS日志文件格式,这样一来我们就得到的要清理的日志文件名然后,我们再使用del /s /f d:\iislog\ex070916.log 来清除日志所在文件夹目录及子目录下的所有这个文件名的文件了,从而清除志,但这个仅仅是清除一天的日志,所以我们还得把这个批处理加到计划任务里,让它每天定时执行,这样一来,所有的计算机的日志问题我们就可以不用管了。
  IIS日志清理VBS版:VBS版理论是没有iis版快,因为他还要借助脚本驱动,而不像cmd版直接使用dos系统的批处理功能快(猜的),VBS毕竟是高级语言,处理日期的能力用一句话就实现了,而CMD版得写半页。IIS日志清理VBS版的实现用VBS遍历IIS日志所在目录下的所有文件,及文件夹,然后取文件名组合成日期型的,然后当前日期-这个日期,看看是不是超过了设定的天数,超过的话delete,这种思路有个好处就是一次可以清除N天前的所有记录,而不是只是一天的,他可以你CMD版日志清理一样,把这个脚本写到计划任务里,天天运行,也可以过一段时间手动运行一次。这个代码明显比IIS日志清理CMD版少了。
  IIS日志清理CMD版代码(DelIISLog.bat)代码如下:[mw_shl_code=applescript,true]@echo off 7 N* ^$ a. M. Y1 o
title ' x4 c/ f1 o" v! v
::设置当前日期前多少天或后多少天 / w/ m. k% C, |4 g) Q6 [+ [, E& E
set/a beforedays=-3 7 G3 B* D* I, K
::设置目录所在位置
5 T  ]7 @. }/ y" H. V2 Dset dir="F:\log\"
  v: Y0 a' m; Z/ m4 E::当前日期转换为天数并进行计算
6 V. g, {; K% b  Ccall :Date2Day %date:~0,10% days
& Q9 W8 L9 Z, D7 d# o$ \1 eset/a days=%days%%beforedays% 9 w5 L; A+ ~) s* o
call :Day2Date %days% lastdate 3 {5 C, f1 \1 L5 R) ~. i
::计算完毕,生成想要的字符组合 - y# @% y( F  f
set okstr=ex%lastdate:~2,6%.log 9 \$ j! n) G1 u0 B- i7 f5 X! Z6 t
::删除这些文件
& |; d4 {& }& `  @del del /f /s /q %dir%\%okstr%
. ]% }& N! B  O" M0 g3 Y* Bcmd /k : y6 q" z+ R% s8 G, p. i
:Date2Day 8 `/ F( ^% [& t2 u. X/ ]7 Y
setlocal ENABLEEXTENSIONS - Z2 h/ z% `6 L: W6 {4 r
for /f "tokens=1-3 delims=/-, " %%a in ('echo/%1') do (
' @& ^8 y1 O3 h0 ]$ N+ zset yy=%%a & set mm=%%b & set dd=%%c " W! [; D0 y& Q1 F
)
& }& A: z2 O, i" y5 o5 Uset /a dd=100%dd%%%100,mm=100%mm%%%100 / |- A# O( l4 L0 x3 V
set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2
9 ~) F6 A9 n$ b6 Bset /a j=j/5+dd+y*365+y/4-y/100+y/400-2472633 ' W, I' \. ~7 k" e0 b) o
endlocal&set %2=%j%&goto :EOF
0 G# M- L' z. x6 F- ]:Day2Date / Z. u8 n5 [' h+ J. q( s
setlocal ENABLEEXTENSIONS
1 L8 L4 M! u7 D# h. Sset /a i=%1,a=i+2472632,b=4*a+3,b/=146097,c=-b*146097,c/=4,c+=a
" z5 x  w: h7 V  sset /a d=4*c+3,d/=1461,e=-1461*d,e/=4,e+=c,m=5*e+2,m/=153,dd=153*m+2,dd/=5
( P) d4 |- h. }0 ?6 lset /a dd=-dd+e+1,mm=-m/10,mm*=12,mm+=m+3,yy=b*100+d-4800+m/10
  D0 K9 C. L/ g% H) L% V+ H$ E! A(if %mm% LSS 10 set mm=0%mm%)&(if %dd% LSS 10 set dd=0%dd%)
# o0 J# X, h9 N. j" N9 sendlocal&set %2=%yy%%mm%%dd%&goto :EOF* Q+ h& g5 a* ?# K1 z3 ^) a
[/mw_shl_code]
  IIS日志清理VBS版代码(DelIISLog.vbs)代码如下:
'IIS日志清理VBS版代码(DelIISLog.vbs) # L6 M6 W# G% {' U. v
'调用方法:DelIISLog "IIS日志所在路径",保留多少天的IIS日志
6 D- ^$ r, c" q9 n  [% b'遍历IIS日志文件夹下的所有文件及子文件夹下的文件
" K$ I, r  W- F, cFunction DelIISLog(IISLogPath,KeepDays)
8 E5 h$ }6 S0 x2 Fon error resume next
1 {* y. P, c$ E+ gSet oFso = CreateObject("Scripting.FileSystemObject") / Q( i3 z3 k  M2 H& ^6 `% }! R5 s
Set oFolder = oFso.GetFolder(IISLogPath) 3 k, ?  w5 i( k2 p( a8 i
Set oSubFolders = oFolder.SubFolders '得到该目录下所有的文件夹的集合 * E4 }. s& g4 @1 E6 ~8 H
Set oFiles = oFolder.Files '得到该目录下所有的文件的集合
$ ], I! E0 n, H$ a1 V'第一步处理当前目录下的所有文件 $ i5 Y, D. U4 c* r
For Each oFile In oFiles '遍历所有文件 # ^8 b: i4 c. D
if right(oFile.name,3)="log" then 0 e- L1 U" P; D1 \# R% K: G
oDate=cdate("20" & mid(oFile.name,3,2) & "-" & mid(oFile.name,5,2) & "-" & mid(oFile.name,7,2))
" [0 [7 y, U7 B  o0 F5 wif date-oDate > KeepDays then oFile.delete '判断是不是要处理的IIS日志文件,如果是的话直接删除 , |5 G3 L! T8 X' v$ H* U
end if . g4 y& e3 r0 r
Next 2 q: a* K9 E1 W( ]
'第二步处理当前目录下的所有目录,进行递归调用   R; K) r2 @# |; n9 ^2 X
For Each oSubFolder In oSubFolders + V. z; L3 m8 z' x. r1 d$ G9 Y+ p
DelIISLog oSubFolder.Path,KeepDays '递归 . |: {5 B! g3 }. ]
Next
+ G: c* U# |2 M8 ?0 ?/ V' [End Function   }$ R) [+ }- }7 P/ e" X2 T
DelIISLog "D:\IISLogTest",20 '遍历
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|第一站论坛 ( 蜀ICP备06004864号-6 )

GMT+8, 2024-4-29 10:33 , Processed in 0.073074 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表