0
votes

I am having a problem with my script not actually producing a zip file. When I test the script with the paths set to something like this:

C:\Users\Bob\Desktop\Folder1\Folder2

with the test log files in folder 1 being deleted if older than 7 days, and being zipped and moved to folder 2, it will run perfectly fine. It will produce the zipped file with all of the log files in it and have the proper naming set.

So I know that at least the logic of the script works for that.

My problem is that I need this script to go through the security logs on a machine and delete any older than 7 days, and then zip up any that are left and be sent to a mounted shared drive. When I change the path to something like:

C:\Windows\System32\Config (where the logs are located)

it will still delete any log files older than 7 days, but it does not produce a zip file with any that are left. It just does nothing even though the script produces no errors. I've been trying to figure this out with no luck going over my code. If anyone could take a look over what I've had and let me know where I've gone astray that would be extremely helpful.

Thank you in advance, the script is found below.

'READ FIRST '------------------------------------------------------------------------------------------

'Lines 14-53 delete any log files older than 7 days. Changing the value in "iDaysOld =" will change the time frame in which files are kept or deleted. 'If files do not need to be deleted this part of the script can be taken out and the Archive/Move ability will still be intact

'Lines 57-102 contain the ability to Zip your log files and send them to a new folder. The zipped file is named after the localhost and a date/timestamp is appended to the file name.

'------------------------------------------------------------------------------------------

Option Explicit

Dim oFSO, oFolder, sDirectoryPath 
Dim oFileCollection, oFile, sDir 
Dim iDaysOld 

' Specify Directory Path From Where You want to clear the old files

sDirectoryPath = "C:\Windows\System32\config"

' Specify Number of Days Old File to Delete

iDaysOld = 7

Set oFSO = CreateObject("Scripting.FileSystemObject") 
Set oFolder = oFSO.GetFolder(sDirectoryPath) 
Set oFileCollection = oFolder.Files 

For each oFile in oFileCollection

'Specify the Extension of file that you want to delete 'and the number with Number of character in the file extension

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)

'Path where logs are located

PathLogs = "C:\Windows\System32\config"  

'Loop through the logs and zip

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."
1
you may be getting a UAC restriction, why not try and create the zip files in another folder (outside c:\windows) to see if the files are created OK there?Rodolfo
That is what I thought at first to, but doesn't it usually return a privileges error? I altered the registry to add a "run as administrator" option to vbs files and tried that but still no luck. Right now I just have it looking for .log files in a path then telling it to zip any it finds. it was defaulting the zip to the folder it found any .log files in before. I am not exactly sure the syntax of having it create the zip file elsewhereparchambeau
use -o like so ... 7z x archive.zip -oC:\DocRodolfo
Tried this. I keep getting a ton of access is denied prompts back on things that I didn't even tell 7zip to look through. such as Users\ReportServer$SQLEXPRESS\Templates: Access is denied. When the command I entered was C:\"Program Files\7-zip\7z.exe" a c:\testscripts\asdf\.log -oC:\testscripts\asdf2 Any ideas??parchambeau

1 Answers

0
votes

I'd probably try echoing out the 7zip command line, checking that it looks right and running it manually from the same location as the script runs from. It might look wrong when you see it or 7zip might give you a message to indicate what's going on.