VBScript for removing files from folder

Hi All Experts

I would like to use Vbscript to remove some files from folder. These files are log files created automatically by application daily, I only want to keep 14 days log files and remove rest of them.

Anyone can tell me how to write a VBScript for this purpose? I am quite a new person to VB script.

Any help would be most appreciated.

Best Regards
mxgongAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

mass2612Commented:
Hi,

I have a script to cleanup log files on a particular directory for one of our apps. Maybe this will work for you. test it out and let us know if you have any ???

Lines you need to edit are: -
 iDaysOld = 14
      sDirPath = "D:\" ' drive letter of where the directory to clean up is
      sDirName = "foldername" ' directory where the log files you need to cleanup are




' COMMENT: This script will search a speicified directory for folders older than XX days and delete them
'
'==========================================================================
 
'Option Explicit
'on error resume next
      Dim oFSO
      Dim sDirectoryPath
      Dim oFolder
      Dim oFileCollection
      Dim oFile
      Dim iDaysOld
 
'Customize values here to fit your needs
Const ForWriting = 2 ' creats a constant for writing to file
Const Forappending = 8 ' creates a constant for appending to file
 
' objOutputFile.WriteLine "Account name" & "," & "Alternate Recipient"
      iDaysOld = 14
      sDirPath = "D:\" ' drive letter of where the directory to clean up is
      sDirName = "foldername" ' directory where the log files you need to cleanup are
      Set fs = CreateObject("scripting.filesystemobject")
      sDirectoryPath = sDirPath & sDirName '"C:\temp"
      Set fo = fs.GetFolder(sDirectoryPath)
      Set folders = fo.SubFolders
	  OutputFile = sDirName & ".log"	' Output file with server details
 
	  Set objFSO = CreateObject("Scripting.FileSystemObject")
' Set objInputFile = objFSO.OpenTextFile(InputFile,1,FALSE) ' opens text file object
	  Set objOutputFile = objFSO.OpenTextFile(OutputFile, forWriting, True) ' opens output file for writing      
      strFolderList = "The following Folders are found under " & sDirectoryPath
	  strDelFolderList = "The following Folders are older than " & iDaysOld & " day will be deleted from " & sDirectoryPath
'Walk through each file in this folder collection. 
'If it is older than 3 weeks (10) days, then delete it.
		For Each folder In folders
		strFolderList = strFolderList & vbcrlf & folder.Name & vbtab & folder.DateLastModified
            If folder.DateLastModified < (Date() - iDaysOld) Then
                  strDelFolderList = strDelFolderList & vbcrlf & folder.Name & vbtab & folder.DateLastModified
                  folder.Delete(True)
            End If
      Next
'WScript.Echo strFolderList
'WScript.Echo strDelFolderList
objOutputFile.WriteLine Now & vbcrlf
objOutputFile.WriteLine "### Cleaning folder " & sDirectoryPath & " removing folders older than " & iDaysOld & " ### " & vbcrlf & vbcrlf
objOutputFile.WriteLine strFolderList & vbcrlf
objOutputFile.WriteLine strDelFolderList
Wscript.echo "Script completed see log file - " & OutputFile & vbcrlf
'Clean up
      Set oFSO = Nothing
      Set oFolder = Nothing
      Set oFileCollection = Nothing
      Set oFile = Nothing

Open in new window

0
mass2612Commented:
Eeek. Sorry i think I posed the wrong script above will search for folders in a directory and delete the old ones. I'll try to post the files one soon. If you don't here from me today then request this call to be delete refund and re-post. Once again sorry about that.

0
mass2612Commented:
I very quickly fixed this one up and tested it try it out it should suit your need. this will delete files that have not been modified for 14 days.

Set Directory = Fso.GetFolder("C:\temp\test")         ' place for directory details here
If DateDiff("D", Modified.DateLastModified, Now) > 14 Then Modified.Delete ' this line means 14 days

Dim Fso
Dim Directory
Dim Modified
Dim Files
 
Set Fso = CreateObject("Scripting.FileSystemObject")
Set Directory = Fso.GetFolder("C:\temp\test")         ' place for directory details here
Set Files = Directory.Files
 
For Each Modified in Files
If DateDiff("D", Modified.DateLastModified, Now) > 14 Then Modified.Delete
Next

Open in new window

0
Become a Microsoft Certified Solutions Expert

This course teaches how to install and configure Windows Server 2012 R2.  It is the first step on your path to becoming a Microsoft Certified Solutions Expert (MCSE).

mxgongAuthor Commented:
Thanks Mass2612....

I will try it today and get it back to you ASAP.

Cheers
0
mxgongAuthor Commented:
Hi Mass2612

Your script is working perfectly. But I may need a small change. (I am sorry I didn't mention my question clearly. )

In my log folder, you can see the attachment in the below. I only want to remove log filename "access.2009-xx-xx" which is over 14 days. I want to keep file:boot, process, server, and all server.log.2009-xx-xx which could be over 14 days.

Could you please help me to change the script?

I appreciate to your help and time.

Cheers
logfile.JPG
0
mass2612Commented:
Try this. This will delete files older than 14 days with the string access.2009 in the filename. Well in theory make sure you test it somewhere safe first.

This is the line of note: -
if Instr(1,Modified.Name,"access.2009",1) then Modified.Delete

Dim Fso
Dim Directory
Dim Modified
Dim Files
 
Set Fso = CreateObject("Scripting.FileSystemObject")
Set Directory = Fso.GetFolder("C:\temp\test")
Set Files = Directory.Files
 
For Each Modified in Files
If DateDiff("D", Modified.DateLastModified, Now) > 14 Then 
	if Instr(1,Modified.Name,"access.2009",1) then Modified.Delete
	End if
Next

Open in new window

0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
mass2612Commented:
Morning - did this end up working ok for you?
0
mxgongAuthor Commented:
Thanks for your help.
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
VB Script

From novice to tech pro — start learning today.