我的脚本实际上没有生成 zip 文件时遇到问题。当我使用设置为这样的路径测试脚本时:
C:\Users\Bob\Desktop\Folder1\Folder2
如果文件夹 1 中的测试日志文件超过 7 天将被删除,并被压缩并移动到文件夹 2,它将运行得非常好。它将生成包含所有日志文件的压缩文件,并具有正确的命名集。
所以我知道至少脚本的逻辑适用于此。
我的问题是我需要这个脚本来检查机器上的安全日志并删除任何超过 7 天的内容,然后压缩剩下的任何内容并发送到已安装的共享驱动器。当我将路径更改为以下内容时:
C:\Windows\System32\Config(日志所在的位置)
它仍然会删除任何超过 7 天的日志文件,但不会生成任何剩余的 zip 文件。即使脚本没有产生错误,它什么也不做。我一直在试图解决这个问题,但我的代码没有运气。如果有人可以看看我所拥有的并让我知道我在哪里误入歧途,那将非常有帮助。
提前谢谢你,脚本在下面找到。
'先读'---------------------------------- ------------------------------------------
'第 14-53 行删除所有超过 7 天的日志文件。更改“iDaysOld =”中的值将更改保留或删除文件的时间范围。'如果不需要删除文件,这部分脚本可以被取出,存档/移动功能仍然完好无损
'第 57-102 行包含压缩日志文件并将它们发送到新文件夹的功能。压缩文件以 localhost 命名,并在文件名后附加日期/时间戳。
'---------------------------------------------------- -----------------------------------------
Option Explicit
Dim oFSO, oFolder, sDirectoryPath
Dim oFileCollection, oFile, sDir
Dim iDaysOld
' 指定要清除旧文件的目录路径
sDirectoryPath = "C:\Windows\System32\config"
' 指定要删除的旧文件的天数
iDaysOld = 7
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oFolder = oFSO.GetFolder(sDirectoryPath)
Set oFileCollection = oFolder.Files
For each oFile in oFileCollection
'指定要删除的文件的扩展名'和文件扩展名中带有字符数的数字
If LCase(oFSO.GetExtensionName(oFile.Name)) = "log" Then
If oFile.DateLastModified < (Date() - iDaysOld) Then
oFile.Delete(True)
End If
End If
Next
Set oFSO = Nothing
Set oFolder = Nothing
Set oFileCollection = Nothing
Set oFile = Nothing
WScript.Echo "Press to start zipping log files."
Dim objFile, objPath, objFolder, Command, PathLogs, RetVal
Dim objFSO: Set objFSO = CreateObject("Scripting.FileSystemObject")
Dim objShell: Set objShell = CreateObject("WScript.Shell")
Dim d : d = Date()
Dim dateStr : dateStr = Year(d) & "-" & Right("00" & Month(d), 2) & "-" & Right("00" & Day(d), 2)
Dim t : t = Time()
Dim timeStr: timeStr = Hour(t) & "-" & Right("00" & Minute(t), 2) & "-" & Right("00" & Second(t), 2)
'日志所在的路径
PathLogs = "C:\Windows\System32\config"
'遍历日志并压缩
Set objPath = objFSO.GetFolder(PathLogs)
For Each objFile In objPath.Files
If (LCase(objFSO.GetExtensionName(objFile)) = "log") Then
' zip files
Command = """C:\Program Files\7-zip\7z.exe"" a " & PathLogs & "%computername%" & "-" & dateStr & "-" & timeStr & ".zip " & PathLogs & objFile.Name
RetVal = objShell.Run(Command,0,true)
End If
Next
WScript.Echo "Zip Successful."
WScript.Echo "Now Moving Zipped Files into Archived Folder"
'move files
Set objFSO = CreateObject("Scripting.FilesystemObject")
objFSO.MoveFile "C:\Windows\System32\config\*.zip" , "C:\Testscripts\testfolder\Archived"
WScript.Echo "Move Successful."