我想写一个脚本/批处理,它将把我每天的IIS日志收起来并按月压缩它们.
ex080801.log,格式为ex yymmdd .log
ex080801.log - ex080831.log被压缩并删除日志文件.
我们这样做的原因是因为在一个繁重的站点上,一天的日志文件可能是500mb到1gb所以我们将它们压缩起来,将它们压缩98%并转储真实的日志文件.我们使用webtrend来分析日志文件,它能够读入zip文件.
有没有人有关于如何编写脚本或愿意分享一些代码的想法?
您需要一个命令行工具来压缩文件.我推荐免费且易于使用的7-Zip.自包含命令行版本(7za.exe)是最便携的选择.
这是一个两行批处理文件,它会压缩日志文件并在之后删除它们:
7za.exe a -tzip ex%1-logs.zip %2\ex%1*.log del %2\ex%1*.log
第一个参数是4位数的年份和月份,第二个参数是包含日志的目录的路径.例如:ziplogs.bat 0808 c:\logs
可以更精细地(即搜索文件名以确定要归档的月份).您可能需要查看Windows FINDSTR命令以使用正则表达式搜索输入文本.
这是我的脚本,它基本上适应了David的,并在上个月的日志中拉上,移动它们并删除原始日志文件.这也适用于Apache日志.唯一的问题是,如果您的DOS日期函数输出一周的日期,您可能需要编辑替换命令.您还需要安装7-zip.
你也可以下载IISlogslite,但它将每天的文件压缩成一个我认为没用的zip文件.有一个关于网络的vbscript在做同样的事情.
------------------------------------------------------------------------------------- @echo on :: Name - iislogzip.bat :: Description - Server Log File Manager :: :: History :: Date Authory Change :: 27-Aug-2008 David Crow Original (found on stack overflow) :: 15-Oct-2008 AIMackenzie Slimmed down commands :: ======================================================== :: setup variables and parameters :: ======================================================== :: generate date and time variables set month=%DATE:~3,2% set year=%DATE:~8,2% ::Get last month and check edge conditions set /a lastmonth=%month%-1 if %lastmonth% equ 0 set /a year=%year%-1 if %lastmonth% equ 0 set lastmonth=12 if %lastmonth% lss 10 set lastmonth=0%lastmonth% set yymm=%year%%lastmonth% set logpath="C:\WINDOWS\system32\LogFiles" set zippath="C:\Program Files\7-Zip\7z.exe" set arcpath="C:\WINDOWS\system32\LogFiles\WUDF" :: ======================================================== :: Change to log file path :: ======================================================== cd /D %logpath% :: ======================================================== :: zip last months IIS log files, move zipped file to archive :: then delete old logs :: ======================================================== %zippath% a -tzip ex%yymm%-logs.zip %logpath%\ex%yymm%*.log move "%logpath%\*.zip" "%arcpath%" del %logpath%\ex%yymm%*.log