我已经在 Google 上搜索过这个问题,但是没有找到太多的线索。但我正在寻找一种手动(一次性运行,免费)/开源的方法来安全地从 /inetpub/logs/logFiles 中清除 iis 日志
我见过有人提到 isslogs.com,我不知道它有多可靠,但即便如此,我也不想进行任何类型的计划任务,也不想为我不经常使用的东西付费
我只想要一种简单安全的方法来删除 /inetpub/logs/logFiles 中多个文件夹中的所有日志
如果您能提供关于如何删除这些问题的建议或指导,我们将不胜感激。
答案1
这是一个删除超过 90 天的 IIS 日志文件的脚本
MaxDays = 90
strComputer = InputBox("This script will delete IIS .log files over 90 days old "_
& "from the machine you specify below.")
wmiQuery = "Select * from Win32_OperatingSystem"
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery(wmiQuery)
For Each objItem In colItems
sWindowsPath = objItem.WindowsDirectory
Next
Set objW3SVC = GetObject( "IIS://" & strComputer & "/W3SVC")
For Each objSite In objW3SVC
If objSite.Class = "IIsWebServer" Then
strLogDir = UCase(objSite.LogFileDirectory)
strLogDir = Replace(strLogDir,"%WINDIR%",sWindowsPath,1,1,1)
strLogDir = Replace(strLogDir,"%SYSTEMROOT%",sWindowsPath,1,1,1)
strLogDir = Replace(strLogDir,":","$",1,1,1)
objLogFolder = "\\" & strComputer & "\" & strLogDir
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oFolder = oFSO.GetFolder(objLogFolder)
Set colSubFolders = oFolder.Subfolders
For Each oSubFolder In colSubFolders
If InStr(UCase(oSubFolder),"W3SVC") Then
For Each oFile In oSubFolder.files
If InStr(LCase(oFile.Name),".log") Then
If (Date - oFile.DateCreated > CInt(MaxDays)) Then
oFSO.DeleteFile(oSubFolder & "\" & oFile.Name)
End If
End If
Next
End If
Next
End If
Next
MsgBox("All done.")
答案2
您可以使用 /S 标志来强制删除子目录中的文件。/Q 标志将阻止它提示您 - 如果您想谨慎,请省略它。因此,类似于:
删除/S/Q logdir\*.log
如果您还想删除子目录,可以使用“rmdir”。它具有相同的两个标志选项。
答案3
这个对我来说最有效。保存为 Retention.vbs 并运行或安排。
sLogFolder = "c:\inetpub\logs\LogFiles"
iMaxAge = 30 'in days
Set objFSO = CreateObject("Scripting.FileSystemObject")
set colFolder = objFSO.GetFolder(sLogFolder)
For Each colSubfolder in colFolder.SubFolders
Set objFolder = objFSO.GetFolder(colSubfolder.Path)
Set colFiles = objFolder.Files
For Each objFile in colFiles
iFileAge = now-objFile.DateCreated
if iFileAge > (iMaxAge+1) then
objFSO.deletefile objFile, True
end if
Next
Next