LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

[点晴永久免费OA]Windows中IIS操作日志自动清理脚本(BAT版/VBS版/JS版)

admin
2023年9月26日 9:24 本文热度 1362

IIS默认日志记录在C:\WINDOWS\system32\LogFiles,IIS网站管理器没有提供自动删除操作日志功能,时间一长,特别是子站点多的服务器,一个稍微有流量的网站,其日志每天可以达到上百兆,这些文件日积月累会严重的占用服务器磁盘空间,有必要对他们进行定期删除。

 

BAT版

@echo off

title 清理IIS日志文件


:: IIS日志文件目录

set log_dir="C:\inetpub\logs\LogFiles"


:: 保留日志天数

set bak_dat=15


:: 删除日志文件

forfiles /p %log_dir% /S /M *.log /D -%bak_dat% /C "cmd /c echo 正在删除@relpath 文件… & echo. & del @file" 

VBS版

'IIS日志清理VBS版代码(DelIISLog.vbs)

'调用方法:DelIISLog "IIS日志所在路径",保留多少天的IIS日志

'遍历IIS日志文件夹下的所有文件及子文件夹下的文件

Function DelIISLog(IISLogPath,KeepDays)

    on error resume next

    Set oFso = createObject("scripting.FileSystemObject")

    Set oFolder = oFso.GetFolder(IISLogPath)

    Set oSubFolders = oFolder.SubFolders '得到该目录下所有的文件夹的集合

    Set oFiles = oFolder.Files '得到该目录下所有的文件的集合

    '第一步处理当前目录下的所有文件

    For Each oFile In oFiles '遍历所有文件

        if right(oFile.name,3)="log" then

            oDate=cdate("20" & mid(oFile.name,3,2) & "-" & mid(oFile.name,5,2) & "-" & mid(oFile.name,7,2))

            if date-oDate > KeepDays then oFile.delete '判断是不是要处理的IIS日志文件,如果是的话直接删除

        end if

    Next

    '第二步处理当前目录下的所有目录,进行递归调用

    For Each oSubFolder In oSubFolders

        DelIISLog oSubFolder.Path,KeepDays '递归

    Next

End Function

DelIISLog "C:\WINDOWS\system32\LogFiles",180 '遍历

您可以通过从命令提示符运行以下命令来手动执行此脚本:

cscript.exe c:\path-to-your-scripts\DelIISLog.vbs

JS版

//IIS日志清理JS版代码(DelIISLog.js)

//调用方法:dellogfile(180),保留多少天的IIS日志

function dellogfile(beforedays)

{    var fso = new ActiveXObject("scripting.FileSystemObject");    var dir = fso.GetFolder("c:\\WINDOWS\\system32\\LogFiles");    //改成你的 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(2, 2);                var mouth = fileName.substr(4, 2);                var day = fileName.substr(6, 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(180);//删除180天前的日志

将以上命令保存成相应后缀的文件:DelIISLog.batDelIISLog.vbsDelIISLog.js,然后放到Windows系统中定时任务里面执行,即可定时清理日志记录。

使用Windows任务计划程序,创建一个新任务并将触发器设置为每天执行(或任何对您有意义的间隔)。创建一个如下所示的新操作:

只需将脚本文件的路径放在“添加参数”文本框中。

就是这样!您的日志文件现在将被检查,您将避免IIS服务器安装常见的可用磁盘空间的缓慢消耗。 

很多人在问我:

1、Windows Server 计划任务在哪里配置?

2、Windows Server 可以配置每分钟或是每小时执行我的任务吗?

答案是:可以!

首先Windows Server 计划任务的名称是“任务计划程序”不在控制面板里,而是在“管理工具”里。打开“任务计划程序”–点击“任务计划程序库”在右则会看到操作项里有“创建基本任务”和“创建任务”如图所示:

点击“创建任务”后如图所示:填写好相应的名称和勾选好必要的条件

选择“触发器”选项,点击“新建”,创建任务执行时间,“重复任务间隔”这个选择后,后面有时间选择,是每小时,还是每分,可自己选择后再修改时间,再确定。这里我们设置为每天1次即可,时间随便选一个。

再来配置需要执行的“操作”,就是选择所写的程序或是BAT文件,这里很重要的配置是选择BAT文件后,在“起始于(可选)”这里一定要填写相应执行程序或是BAT文件的所在目录,要不然是执行不成功的。

特别说明:我差点被骗了,认为Windows计划任务是精确不到分钟级别的,主要是看到“重复时间间隔(P)”右边没有“1分钟”选项,如下图所示:

其实,它除了下拉选择外,还可手动修改时间值,比如上面的“1分钟”!!!

保存时,还会需要提供操作者密码,提供后保存即可:

添加后,列表栏中会出现添加的计划任务。


该文章在 2023/9/26 10:24:15 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved