[點晴永久免費OA]Windows中IIS操作日志自動清理腳本(BAT版/VBS版/JS版)
當(dāng)前位置:點晴教程→點晴OA辦公管理信息系統(tǒng)
→『 經(jīng)驗分享&問題答疑 』
IIS默認(rèn)日志記錄在C:\WINDOWS\system32\LogFiles,IIS網(wǎng)站管理器沒有提供自動刪除操作日志功能,時間一長,特別是子站點多的服務(wù)器,一個稍微有流量的網(wǎng)站,其日志每天可以達(dá)到上百兆,這些文件日積月累會嚴(yán)重的占用服務(wù)器磁盤空間,有必要對他們進(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 '遍歷 您可以通過從命令提示符運行以下命令來手動執(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)中定時任務(wù)里面執(zhí)行,即可定時清理日志記錄。 使用Windows任務(wù)計劃程序,創(chuàng)建一個新任務(wù)并將觸發(fā)器設(shè)置為每天執(zhí)行(或任何對您有意義的間隔)。創(chuàng)建一個如下所示的新操作: 很多人在問我: 1、Windows Server 計劃任務(wù)在哪里配置? 2、Windows Server 可以配置每分鐘或是每小時執(zhí)行我的任務(wù)嗎? 答案是:可以! 首先Windows Server 計劃任務(wù)的名稱是“任務(wù)計劃程序”不在控制面板里,而是在“管理工具”里。打開“任務(wù)計劃程序”–點擊“任務(wù)計劃程序庫”在右則會看到操作項里有“創(chuàng)建基本任務(wù)”和“創(chuàng)建任務(wù)”如圖所示: 點擊“創(chuàng)建任務(wù)”后如圖所示:填寫好相應(yīng)的名稱和勾選好必要的條件 選擇“觸發(fā)器”選項,點擊“新建”,創(chuàng)建任務(wù)執(zhí)行時間,“重復(fù)任務(wù)間隔”這個選擇后,后面有時間選擇,是每小時,還是每分,可自己選擇后再修改時間,再確定。這里我們設(shè)置為每天1次即可,時間隨便選一個。 再來配置需要執(zhí)行的“操作”,就是選擇所寫的程序或是BAT文件,這里很重要的配置是選擇BAT文件后,在“起始于(可選)”這里一定要填寫相應(yīng)執(zhí)行程序或是BAT文件的所在目錄,要不然是執(zhí)行不成功的。 特別說明:我差點被騙了,認(rèn)為Windows計劃任務(wù)是精確不到分鐘級別的,主要是看到“重復(fù)時間間隔(P)”右邊沒有“1分鐘”選項,如下圖所示: 其實,它除了下拉選擇外,還可手動修改時間值,比如上面的“1分鐘”!!! 保存時,還會需要提供操作者密碼,提供后保存即可: 添加后,列表欄中會出現(xiàn)添加的計劃任務(wù)。 該文章在 2023/9/26 10:24:15 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |