• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 475
  • Last Modified:

VB Script or Batch File to Delete Files and Folder Except for Two Specified Folders That Should not be Deleted

I'm looking for a VB script or batch file that can delete all files and folders in a nested directory structure except for two specific folders.  An example is:

C:\test\nextlevel\nextlevel\

Delete all files and folders except for:

C::\test\nextlevel\nextlevel\dontdelete1
C::\test\nextlevel\nextlevel\dontdelete2

I would appreciate any advice on how to do this.

Thanks.
0
COV-Webmaster
Asked:
COV-Webmaster
  • 3
  • 2
1 Solution
 
Bill PrewCommented:
So, for the folders not to be deleted, do you want to specify just the folder name, or the full path to that folder? So in you example, do you want to specify

C:\test\nextlevel\nextlevel\dontdelete1
C:\test\nextlevel\nextlevel\dontdelete2

or just

dontdelete1
dontdelete2

~bp
0
 
COV-WebmasterCity Of VancouverAuthor Commented:
I would like to specify the full path to the folders that should not be deleted.

Thanks.
0
 
Bill PrewCommented:
Okay, give this a try, adjust paths as needed in the top section.

' Define the folder to scan, and the age of files to delete
Const strBaseDir = "C:\test\nextlevel\nextlevel"

' Create a dictionary to hold the list of folders to skip
Set dicSkip = CreateObject("Scripting.Dictionary")
dicSkip.CompareMode = vbTextCompare

' Add the folders to the dictionary
dicSkip.Add "C:\test\nextlevel\nextlevel\dontdelete1", 0
dicSkip.Add "C:\test\nextlevel\nextlevel\dontdelete2", 0

' Set up filesystem object for usage
Set objFSO = CreateObject("Scripting.FileSystemObject")

' Look for files
PurgeFolder objFSO.GetFolder(strBaseDir)

' Subroutine (recursive) to search for files to delete
Sub PurgeFolder(objFolder)
   ' Skip any folders we don't want to process
   If Not dicSkip.Exists(objFolder.Path) Then

       ' Look at all files in this folder
       For Each objFile In objFolder.Files
            objFile.Delete
            ' WScript.StdOut.WriteLine "Deleted:" & objFile.Path
       Next

       ' Recursively drill down into subfolder
       For Each objSubFolder In objFolder.SubFolders
           PurgeFolder objSubFolder
       Next

       ' If folder is now empty, remove it
       If objFolder.Files.Count = 0 And objFolder.Subfolders.Count = 0 Then
          objFolder.Delete
          ' Wscript.Echo "Deleted folder: " & objFolder.Path
       End If

   End If
End Sub

Open in new window

~bp
0
 
COV-WebmasterCity Of VancouverAuthor Commented:
Thanks very much!  This works exactly the way I need it to.
0
 
Bill PrewCommented:
Great, glad that helped.

~bp
0

Featured Post

Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

  • 3
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now