スクリプトが実際に zip ファイルを生成しないという問題があります。パスを次のように設定してスクリプトをテストすると、次のようになります。
C:\Users\Bob\Desktop\Folder1\Folder2
フォルダ 1 のテスト ログ ファイルが 7 日以上経過している場合は削除され、圧縮されてフォルダ 2 に移動されるため、問題なく動作します。すべてのログ ファイルを含む zip ファイルが生成され、適切な名前が設定されます。
したがって、少なくともスクリプトのロジックがそのために機能することはわかっています。
私の問題は、マシンのセキュリティ ログを調べて 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."