mooriginal
asked on
vb script - would like it to output results in txt file
Hi
I have the following vb created for me.
Looks in a folder and deletes all occurences of files with extension older than 3 days.
All works fine.
Im calling the script via a batch file in windows scheduler to run nightly.
What id like to do is capture more results of the run of this.
Preferably like to:
Capture the files that were deleted if possible in a text file that is overwritten to every nght when the job runs.
If this isnt possible - then just to capture the run and how many files were deleted ?
Id like the first option if possible
Can anyone help ? I know nothing about vb scripting.
thanks
Mo
I have the following vb created for me.
Looks in a folder and deletes all occurences of files with extension older than 3 days.
All works fine.
Im calling the script via a batch file in windows scheduler to run nightly.
What id like to do is capture more results of the run of this.
Preferably like to:
Capture the files that were deleted if possible in a text file that is overwritten to every nght when the job runs.
If this isnt possible - then just to capture the run and how many files were deleted ?
Id like the first option if possible
Can anyone help ? I know nothing about vb scripting.
thanks
Mo
On Error Resume Next
strRoot = "D:\Backups\"
intDays = 3
arrExtensions = Array("bak", "trn","txt")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objRoot = objFSO.GetFolder(strRoot)
For Each objFile in objRoot.Files
strFileExt = objFSO.GetExtensionName(objFile.Path)
For Each strExt in arrExtensions
If LCase(strFileExt) = LCase(strExt) Then
msgbox "bollox"
If DateDiff("d", objFile.DateLastModified, Now) > intDays Then
WScript.Echo objFile.Path
objFile.Delete True
End If
End If
Next
Next
For Each objFolder in objRoot.SubFolders
GetSubFolders objFolder.Path
Next
Sub GetSubFolders(strFolderPath)
Set objSub = objFSO.GetFolder(strFolderPath)
For Each objFile2 in objSub.Files
strFileExt = objFSO.GetExtensionName(objFile2.Path)
For Each strExt in arrExtensions
If LCase(strFileExt) = LCase(strExt) Then
If DateDiff("d", objFile2.DateLastModified, Now) > intDays Then
WScript.Echo objFile2.Path
objFile2.Delete True
End If
End If
Next
Next
For Each objFolder2 in objSub.SubFolders
GetSubFolders objFolder2.Path
Next
End Sub
Here you go...
Const ReportFile = "D:\FileDeletion.txt"
On Error Resume Next
strRoot = "D:\Backups\"
intDays = 3
arrExtensions = Array("bak", "trn","txt")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objRoot = objFSO.GetFolder(strRoot)
Set objOut = objFSO.CreateTextFile(ReportFile)
For Each objFile in objRoot.Files
strFileExt = objFSO.GetExtensionName(objFile.Path)
For Each strExt in arrExtensions
If LCase(strFileExt) = LCase(strExt) Then
msgbox "bollox"
If DateDiff("d", objFile.DateLastModified, Now) > intDays Then
WScript.Echo objFile.Path
objFile.Delete True
If Err.Number <> 0 Then
objOut.WriteLine "COULD NOT DELETE " & objFile.Name & " " & Err.Description
Else
objOut.WriteLine objFile & " successfully deleted."
End If
End If
End If
Next
Next
For Each objFolder in objRoot.SubFolders
GetSubFolders objFolder.Path
Next
objOut.Close
Sub GetSubFolders(strFolderPath)
Set objSub = objFSO.GetFolder(strFolderPath)
For Each objFile2 in objSub.Files
strFileExt = objFSO.GetExtensionName(objFile2.Path)
For Each strExt in arrExtensions
If LCase(strFileExt) = LCase(strExt) Then
If DateDiff("d", objFile2.DateLastModified, Now) > intDays Then
WScript.Echo objFile2.Path
objFile2.Delete True
If Err.Number <> 0 Then
objOut.WriteLine "COULD NOT DELETE " & objFile2.Name & " " & Err.Description
Else
objOut.WriteLine objFile2 & " successfully deleted."
End If
End If
End If
Next
Next
For Each objFolder2 in objSub.SubFolders
GetSubFolders objFolder2.Path
Next
End Sub
ASKER
tried this and it doesnt work
it creates a file but didnt put anything in it..when I ran it with test files
it creates a file but didnt put anything in it..when I ran it with test files
did they get deleted?
ASKER
hi guys
this script works to delete files so thats not the issue.
want i want is not to change it functionality
just improve it if possible.
to answer questions
id like a txt file that is overwritten every time the script is called - once a night.
so not appending just overwritting -
if possible id like to do a count of total number of files that the script deletes.
outputted via the vbs to a txt file to show this.
this script works to delete files so thats not the issue.
want i want is not to change it functionality
just improve it if possible.
to answer questions
id like a txt file that is overwritten every time the script is called - once a night.
so not appending just overwritting -
if possible id like to do a count of total number of files that the script deletes.
outputted via the vbs to a txt file to show this.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
great cheers that worked !
Glad I could help - thanx for the grade! :^)
This can be handled several ways. The most simple and crude way would be to put a line in your .bat file that does something like this;
dir c:\example > c:\log.txt --- look at the command DIR /? for options you wish to use.
The other requires read/writes through-out the vbscript in all the areas that involve the files. if this is the case, a few questions need to be answered. What would you like to see in this log, and what's the retention on this log? Are you planning on appending to the log or write a new log each day, leaving the other alone?