0

スクリプトが実際に 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."
4

1 に答える 1

0

おそらく、7zip コマンド ラインをエコーアウトして、正しく表示されることを確認し、スクリプトの実行場所と同じ場所から手動で実行してみます。見たときに間違っているように見えるか、7zip が何が起こっているかを示すメッセージを表示する場合があります。

于 2012-06-28T15:51:40.250 に答える