[點(diǎn)晴永久免費(fèi)OA]Windows中IIS操作日志自動(dòng)清理腳本(BAT版/VBS版/JS版)
IIS默認(rèn)日志記錄在C:\WINDOWS\system32\LogFiles,IIS網(wǎng)站管理器沒(méi)有提供自動(dòng)刪除操作日志功能,時(shí)間一長(zhǎng),特別是子站點(diǎn)多的服務(wù)器,一個(gè)稍微有流量的網(wǎng)站,其日志每天可以達(dá)到上百兆,這些文件日積月累會(huì)嚴(yán)重的占用服務(wù)器磁盤(pán)空間,有必要對(duì)他們進(jìn)行定期刪除。 BAT版 @echo off title 清理IIS日志文件 :: IIS日志文件目錄 set log_dir="C:\inetpub\logs\LogFiles" :: 保留日志天數(shù) 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) '調(diào)用方法: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 '得到該目錄下所有的文件的集合 '第一步處理當(dāng)前目錄下的所有文件 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 '第二步處理當(dāng)前目錄下的所有目錄,進(jìn)行遞歸調(diào)用 For Each oSubFolder In oSubFolders DelIISLog oSubFolder.Path,KeepDays '遞歸 Next End Function DelIISLog "C:\WINDOWS\system32\LogFiles",180 '遍歷 您可以通過(guò)從命令提示符運(yùn)行以下命令來(lái)手動(dòng)執(zhí)行此腳本: cscript.exe c:\path-to-your-scripts\DelIISLog.vbs JS版 //IIS日志清理JS版代碼(DelIISLog.js) //調(diào)用方法: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天前的日志將以上命令保存成相應(yīng)后綴的文件:DelIISLog.bat、DelIISLog.vbs、DelIISLog.js,然后放到Windows系統(tǒng)中定時(shí)任務(wù)里面執(zhí)行,即可定時(shí)清理日志記錄。 使用Windows任務(wù)計(jì)劃程序,創(chuàng)建一個(gè)新任務(wù)并將觸發(fā)器設(shè)置為每天執(zhí)行(或任何對(duì)您有意義的間隔)。創(chuàng)建一個(gè)如下所示的新操作: 很多人在問(wèn)我: 1、Windows Server 計(jì)劃任務(wù)在哪里配置? 2、Windows Server 可以配置每分鐘或是每小時(shí)執(zhí)行我的任務(wù)嗎? 答案是:可以! 首先Windows Server 計(jì)劃任務(wù)的名稱是“任務(wù)計(jì)劃程序”不在控制面板里,而是在“管理工具”里。打開(kāi)“任務(wù)計(jì)劃程序”–點(diǎn)擊“任務(wù)計(jì)劃程序庫(kù)”在右則會(huì)看到操作項(xiàng)里有“創(chuàng)建基本任務(wù)”和“創(chuàng)建任務(wù)”如圖所示: 點(diǎn)擊“創(chuàng)建任務(wù)”后如圖所示:填寫(xiě)好相應(yīng)的名稱和勾選好必要的條件 選擇“觸發(fā)器”選項(xiàng),點(diǎn)擊“新建”,創(chuàng)建任務(wù)執(zhí)行時(shí)間,“重復(fù)任務(wù)間隔”這個(gè)選擇后,后面有時(shí)間選擇,是每小時(shí),還是每分,可自己選擇后再修改時(shí)間,再確定。這里我們?cè)O(shè)置為每天1次即可,時(shí)間隨便選一個(gè)。 再來(lái)配置需要執(zhí)行的“操作”,就是選擇所寫(xiě)的程序或是BAT文件,這里很重要的配置是選擇BAT文件后,在“起始于(可選)”這里一定要填寫(xiě)相應(yīng)執(zhí)行程序或是BAT文件的所在目錄,要不然是執(zhí)行不成功的。 特別說(shuō)明:我差點(diǎn)被騙了,認(rèn)為Windows計(jì)劃任務(wù)是精確不到分鐘級(jí)別的,主要是看到“重復(fù)時(shí)間間隔(P)”右邊沒(méi)有“1分鐘”選項(xiàng),如下圖所示: 其實(shí),它除了下拉選擇外,還可手動(dòng)修改時(shí)間值,比如上面的“1分鐘”!?。?/p> 保存時(shí),還會(huì)需要提供操作者密碼,提供后保存即可: 添加后,列表欄中會(huì)出現(xiàn)添加的計(jì)劃任務(wù)。 該文章在 2023/9/26 10:24:15 編輯過(guò) |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |