Link to home
Start Free TrialLog in
Avatar of johnswaine
johnswaine

asked on

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

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")
         'WScript.Echo(WshNetwork.ComputerName)       
 
        '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)          
  	       objSubfolder.Delete
               	
                testfile.Write  newFolderName & "successfully copied from computer" & " " & WshNetwork.ComputerName & vbCr & vbLf
              
              'WScript.Echo newFolderName & "successfully copied from computer" & " " & WshNetwork.ComputerName          
                               
           end if                     
        Next
 
	   testfile.Write "File transfer from server" & " "& WshNetwork.ComputerName & " "& "finished at at" &" " & Date & vbCr & vbLf
        testfile.Close  
        Function pd(n, totalDigits) 
                if totalDigits > len(n) then 
                    pd = String(totalDigits-len(n),"0") & n 
                else 
                    pd = n 
                end if 
         End Function 
       
	</script>
</job>

Open in new window

Avatar of Alan_White
Alan_White
Flag of United Kingdom of Great Britain and Northern Ireland image

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

ASKER CERTIFIED SOLUTION
Avatar of Alan_White
Alan_White
Flag of United Kingdom of Great Britain and Northern Ireland image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of johnswaine
johnswaine

ASKER

q