IIS日志清理CMD版的解释

来源:互联网 发布:windows安装包制作工具 编辑:程序博客网 时间:2024/06/05 15:12

    维护项目过程中,一次注意到虚拟主机突然死机了,查看了下,C盘只有几十兆大小,进一步查找问题,发现"C:/WINDOWS/system32/LogFiles/W3SVC1/"下有几十G的日志文件,网络查询了下,原来是虚拟主机的日志文件常时间得不到清理,占据了磁盘空间,导致程序崩盘.

     也是通过网络查询了IIS日志文件清理的问题,IIS日志清理专题,CMD版,VBS版,JS版,WSH版给了好几个解决方案,本文就是针对其给出的"IIS日志清理CMD版"的解释,附解释和源代码如下:

@echo off
::设置要删除当前日期前多少天的数据
::给变量beforeday赋值前加上参数 /a ,表示变量beforeday可用于计算

set /a beforedays=-2

::设置目录所在位置,默认情况下是在:%windir%/system32/LogFiles/W3SVC1/
set   dir="C:/windows/system32/logFiles/W3SVC1/"

::当前日期转换为天数,%date:~0,10%表示取date变量从位置0开始10位长度,结果为:2010-03-16
call :Date2Day %date:~0,10% days

::计算要删除日期所对应的天数,若%days%结果为20456,则days=%days%%beforedays%结果为20454

set /a days=%days%%beforedays%

::将要删除日期所对应的天数转换为对应的日期,结果为:20100314
call :Day2Date %days% lastdate

::计算完毕,生成想要的字符组合,%lastdate:~2,6%为100304,最终拼的结果为ex100314.log
set okstr=ex%lastdate:~2,6%.log

::删除这些文件
del /f /s /q %dir%/%okstr%

cmd /k

::日期转换为天数的函数,%1表示%date:~0,10%,%2表示days
:Date2Day
setlocal ENABLEEXTENSIONS
for /f "tokens=1-3 delims=/.- " %%a in ('echo/%1') do (
set yy=%%a & set mm=%%b & set dd=%%c
)
set /a dd=100%dd%%%100,mm=100%mm%%%100
set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2
set /a j=j/5+dd+y*365+y/4-y/100+y/400-2472633
endlocal&set %2=%j%&goto :EOF

::天数转换为日期的函数,%1表示%days%,%2表示lastdate
:Day2Date
setlocal ENABLEEXTENSIONS
set /a i=%1,a=i+2472632,b=4*a+3,b/=146097,c=-b*146097,c/=4,c+=a
set /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
set /a dd=-dd+e+1,mm=-m/10,mm*=12,mm+=m+3,yy=b*100+d-4800+m/10
(if %mm% LSS 10 set mm=0%mm%)&(if %dd% LSS 10 set dd=0%dd%)
endlocal&set %2=%yy%%mm%%dd%&goto :EOF

 

    

原创粉丝点击