We help IT Professionals succeed at work.

Check out our new AWS podcast with Certified Expert, Phil Phillips! Listen to "How to Execute a Seamless AWS Migration" on EE or on your favorite podcast platform. Listen Now


Vbscript - How to exclude a subdirectory from a log file backup

johnswaine asked
Medium Priority
Last Modified: 2012-05-07
I have the script below that backs up certain log files once a day. Currently it backs up the following directory in its entirety (c:\Dolphin\FSDev\FSPro\Live Site\). Within this directory there are seven subdirectories one of which i wish to exclude from the backup. Could someone possibly give me some pointers as to how to approach this as i am a vb novice and my google searches have drawn a blank.

Thanks in advance
<job id="main">		
	<script language="VBScript">
		Dim strFilePath
		Dim strdest
		Dim objFSO
		Dim objFileCopy
	    Dim dayToCompare
     '   dayToCompare = CDate("1")	    				    
	'MsgBox dayToCompare
		strdest = "\\matrix2\IBELogs\"			
        strComputer = "."
        'display computer name
        Set WshNetwork = WScript.CreateObject("WScript.Network")
        'To do with windows service
        Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
        Set objFSO = CreateObject("Scripting.FileSystemObject")
        'Get the folder directory 
        Set objFolder = objFSO.GetFolder("C:\Dolphin\FSDev\FSPro\Live Site\DataSourceLogfiles")
        'Get the subfolder collection for the directory
        Set colSubfolders = objFolder.Subfolders
          Dim dateComparison 
          Dim dateToSaveFileAs
		  Dim folderNameArray 
		  Dim currentFolderName
		  Dim newFolderName
          Dim folderDate
          Dim splitValue
          Dim strYear
          Dim strMonth
          Dim strDay
          Dim strHours
          Dim strMinutes
          Dim strSeconds
          Dim strConcat       
          Dim lFileDateAndCurrentDateDiff
         Set filesys = CreateObject("Scripting.FileSystemObject") 
                 Set testfile= filesys.CreateTextFile("C:\ArchiveBatchFile\Logs\ArchiveEventLogFile.txt", True) 
testfile.Write "File transfer from server" & " "& WshNetwork.ComputerName & " "& "started at" &" " & Date 
       For Each objSubfolder in colSubfolders       
           dateComparison = Date          
          'Gets the interval between date created and current dates.
          lFileDateAndCurrentDateDiff = DateDiff("d",objSubfolder.DateCreated, dateComparison)
          if lFileDateAndCurrentDateDiff = 1 Then
              'Populate all the date variables requried 
               strYear = Year(objSubfolder.DateCreated)           
               strMonth = Pd(Month(objSubfolder.DateCreated),2)
               strDay = Pd(Day(objSubfolder.DateCreated),2)
               strHours = Pd(Hour(objSubfolder.DateCreated),2)
               strMinutes = Pd(Minute(objSubfolder.DateCreated),2)
               strSeconds = Pd(Second(objSubfolder.DateCreated),2)
               ' character to build string
                 strConcat = "-"       
              'convert and assign Folder Date to a variable for later use.
              'folderDate = FormatDateTime(objSubfolder.DateCreated,2)
               folderDate = strYear & strConcat & strMonth & strConcat & strDay & " " &_
               strHours & strConcat & strMinutes & strConcat & strSeconds
              'find and replace / to meet file naming conventions
              folderDate = Replace(folderDate,"/","-")
              splitValue = "_"
              'assign the current folder name
              currentFolderName = objSubfolder.Name          
              'split the current folder 
              folderNameArray =  Split(currentFolderName, splitValue, -1, 1)
              'Insert the created date into the split as we want to ensure that the folders creation
              'date is retained
              newFolderName = folderNameArray(0) & splitValue & folderDate & splitValue & folderNameArray(2)
              'Copy to archive destination
               objSubfolder.Copy(strdest & newFolderName)          
                testfile.Write  newFolderName & "successfully copied from computer" & " " & WshNetwork.ComputerName & vbCr & vbLf
              'WScript.Echo newFolderName & "successfully copied from computer" & " " & WshNetwork.ComputerName          
           end if                     
	   testfile.Write "File transfer from server" & " "& WshNetwork.ComputerName & " "& "finished at at" &" " & Date & vbCr & vbLf
        Function pd(n, totalDigits) 
                if totalDigits > len(n) then 
                    pd = String(totalDigits-len(n),"0") & n 
                    pd = n 
                end if 
         End Function 

Open in new window

Watch Question

You need an IF statement within the For Each loop.  There would be nicer ways of doing this if you had more folders to exlcude but this will work.  I can post a fully modified script if you need but if you put the following line in just after the For Each and then put anotehr End If down just before the Next, it should work.

If  objSubfolder.name <> "TheFolderNameYouWantToExclude" Then

Open in new window

Unlock this solution and get a sample of our free trial.
(No credit card required)


Unlock the solution to this question.
Thanks for using Experts Exchange.

Please provide your email to receive a sample view!

*This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.


Please enter a first name

Please enter a last name

8+ characters (letters, numbers, and a symbol)

By clicking, you agree to the Terms of Use and Privacy Policy.