通过批处理自动删除IIS日志、数据库备份日志和FTP登录日志。IIS日志文件存储位置:默认情况下是在:%windir%\system32\LogFiles,详见修改IIS日志的存放路径。推荐使用bat批处理脚本方式进行批处理自动删除IIS日志。如果需要定期的清理日志只需要在服务器中创建定时的任务计划即可。
【bat批处理脚本方式】
通过判断修改时间要删除日志文件,因为一般的日志文件的修改时间是日志的创建时间,除非有人修改日志文件,修改日期才会发生改变。这种方式不用管日志文件的名称。代码如下:
------------------------------------------------------------------
:: 清理IIS日志文件
@echo off
title 清理IIS日志文件
:: IIS日志文件目录
set log_dir="C:\log"
:: 保留日志天数
set bak_dat=268
:: 删除日志文件
forfiles /p %log_dir% /S /M *.log /D -%bak_dat% /C "cmd /c echo 正在删除@relpath 文件… & echo. & del @file"
将上面的代码复制到文本文件中,修改文件名为DelIISLog.bat;
DelIISLog.bat
------------------------------------------------------------------
注意:
1.不用管日志文件的名称,需要指定文件的后缀名称
2.删除的时间是日志文件的修改时间
3.会遍历深层子文件夹的日志文件,注意子文件夹的其他文件不会被误删除
4.直接使用,基本不用改动代码,只要改动路径和后缀即可
【windows的JScript脚本方式】
这段JScript代码的使用条件:在指定的路径下C:\\log的子文件夹含有W3SVC命名的文件夹底下u_ex160213.log格式的文件(IIS7)。IIS6的日志文件的格式是ex160625.log这种的。
------------------------------------------------------------------
function dellogfile(beforedays)
{
var fso = new ActiveXObject("Scripting.FileSystemObject");
var dir = fso.GetFolder("C:\\log"); //改成你的 IIS 日志目录
for (var fc = new Enumerator(dir.SubFolders); !fc.atEnd(); fc.moveNext())
{
if (fc.item().name.substr(0,5) == "W3SVC") //需要根据日志文件的所在路径进行调整
{
for (var logfiles = new Enumerator(fc.item().Files); !logfiles.atEnd(); logfiles.moveNext())
{
var fileName = logfiles.item().name;
var year = "20" + fileName.substr(4, 2);//需要根据日志文件的命名规则进行调整
var mouth = fileName.substr(6, 2);//需要根据日志文件的命名规则进行调整
var day = fileName.substr(8, 2);//需要根据日志文件的命名规则进行调整
var days = Math.round(((new Date()).getTime() - Date.UTC(year, mouth - 1, day)) / 1000 / 60 / 60 / 24);
if (days >= beforedays) logfiles.item().Delete();
}
}
}
}
dellogfile(30);//删除30天前的日志
//保持命令行界面不关闭
var i=0;
while(1)
{
i++;
}
------------------------------------------------------------------
使用步骤:
1.将上面的代码复制到文本文件中,修改文件名为rmiislog.js;
2. 将 ”cscript rmiislog.js“ 复制到文本文件中,修改文件名为rmiislog.bat,批处理文件;
这种方式是依赖文件名的,而且u_ex160213.log的命名方式是IIS特定的,如果要删除其他的比如ftp的登录日志等就需要调整JScript脚本程序。这段脚本的实现原理是通过遍历目录底下的所有的文件名,将文件名中的年月日进行截取和拼接成日期格式,与当前时间计算间隔的天数来进行判断。
注意:
1.日志文件名中必须包含日期的字符串
2.不用考虑文件名的后缀,只要符合日期条件的都会删除
3.对于删除不同命名格式的各种日志文件,都有可能要调整一下JScript的代码
4.只能删除指定文件夹目录底下的日志,无法进入子文件夹