我遇到了問題,而我的腳本實際上並沒有生成zip文件。當我測試的腳本設置像這樣的路徑:初學VBscript:壓縮日誌文件的腳本
C:\用戶\鮑勃\桌面\ Folder1中\文件夾2
在文件夾1測試日誌文件,如果超過7天被刪除,並被壓縮並移動到文件夾2,它將運行得很好。它將生成包含所有日誌文件的壓縮文件,並設置適當的命名。
所以我知道至少腳本的邏輯適用於此。
我的問題是我需要這個腳本通過計算機上的安全日誌並刪除任何超過7天的日誌,然後將剩下的任何文件壓縮併發送到安裝的共享驅動器。當我改變路徑是這樣的:
C:\ WINDOWS \ system32 \設置(如日誌位於)
它仍然會刪除所有日誌文件超過7天,但它不會產生與任何剩下的zip文件。即使腳本沒有產生任何錯誤,它也不做任何事情。我一直在試圖弄清楚這一點,但沒有運氣過去我的代碼。如果任何人都可以看看我有什麼,並讓我知道我誤入歧途的地方,這將是非常有幫助的。
預先感謝您,腳本在下面找到。
'READ FIRST '----------------------------------------- -------------------------------------------------
'第14-53行刪除超過7天的任何日誌文件。更改「iDaysOld =」中的值將更改保存或刪除文件的時間範圍。 '如果文件不需要刪除,這部分腳本可以取出並且存檔/移動功能仍然完好
'第57-102行包含壓縮日誌文件並將它們發送到一個新的文件夾。壓縮文件以本地主機命名,日期/時間戳記附加到文件名中。
'--------------------------------------------- ---------------------------------------------
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"
「循環通過日誌路徑和zip
f文件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."
您可能會收到UAC限制,爲什麼不嘗試在另一個文件夾(c:\ windows之外)中創建zip文件以查看文件是否已在此創建? – Rodolfo
這就是我第一次想到的,但通常不會返回特權錯誤?我改變了註冊表添加一個「以管理員身份運行」選項vbs文件,並嘗試過,但仍然沒有運氣。現在我只需要在路徑中查找.log文件,然後告訴它壓縮任何找到的文件。這是默認的zip文件夾,它發現之前的任何.log文件。我不完全確定它在其他地方創建zip文件的語法 – parchambeau
使用-o像這樣... ...'7z x archive.zip -oC:\ Doc' – Rodolfo