We help IT Professionals succeed at work.

VB script to delete folder

xzay1967 asked
Last Modified: 2014-12-01
Hi all I am looking for a VB script that will cycle thru the C:\ drive and find a particular folder, and if it exists, delete it and all it sub-folders and contents. This folder will be in a few places especially in the appdata\roaming and appdata\local of every user that has a profile on the computer. With that being said,  I would like the script to go thru every profile folder and find the folder, delete all its contents. Thanks in advance for any assistance.
Watch Question

Top Expert 2016


pls try

Dim fso, bgnFolder, subfolder, certfolder

On Error Resume Next

Set fso = CreateObject("Scripting.FileSystemObject")
bgnFolder = "c:"

For each subfolder in fso.GetFolder(bgnfolder).SubFolders
   certfolder = subfolder & "\appdata\local"
   If fso.FolderExists(certfolder) then
	If fso.GetFolder(certfolder).Files.Count <> 0 then
		fso.DeleteFile(certfolder & "\*"), DeleteReadOnly
	End If
   fso.DeleteFolder certfolder
   End If

Open in new window



Hi thanks for the response, but the folders which I am trying to delete is called Mozilla, in some places, and Mozilla Firefox in another. So basically I want the script to look for Mozilla* in c:\program files (x86), C:\Programdata, C:\Users\<username>\appdata\Roaming, and C:\Users\<Username>\local. Since I won't know what users have logged on before, I want the script to search from the root of C for any folder with Mozilla in the name whether it be Mozilla, or Mozilla Firefox. I hope this better explains. Thanks again.

We can really open this up by using WMI, but it will take it some time to complete the query and could possibly led to deletion of an unintended folder.  If you want to look at going down this path, here is some code:

strComputer = "."

Set objFSO = CreateObject("Scripting.FileSystemObject")

Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

'Set colFolders = objWMIService.ExecQuery("Select * from Win32_Directory where Name like '%Mozilla%'")
Set colFolders = objWMIService.ExecQuery("Select * from Win32_Directory where Name like '%Trash%'")

For Each objFolder In colFolders
	' Verify the folder still exists if we are removing folders
	' as the parent folder may have already been deleted.
	If objFSO.FolderExists(objFolder.Name) Then
		msgbox "Deleting " & objFolder.Name
		' Uncomment the next line to actually delete the folder
		' objFolder.Delete
	End If

msgbox "**** Done ****"

Open in new window

We can also use the File System object mentioned by Rgonzo and using RegEx to do our matching as we loop through the specific folders.

Dim objFSO, objFolder, objUserFolder, objRegEx

' Use RegEx for Pattern Matching
' Since RegEx is much faster if we just declare it once, use it here 
' to make it more global
Set objRegEx = new RegExp
With objRegEx
	.Global = True
	.IgnoreCase = True
	.pattern = "Mozilla"
End With

Set objFSO = CreateObject("Scripting.FileSystemObject")

If objFSO.FolderExists("C:\Program Files (x86)") Then	
	Set objFolder = objFSO.GetFolder("C:\Program Files (x86)")
End If

If objFSO.FolderExists("C:\ProgramData") Then	
	Set objFolder = objFSO.GetFolder("C:\ProgramData")
End If

If objFSO.FolderExists("C:\Users") Then	
	For Each objFolder in objFSO.GetFolder("C:\Users").SubFolders
		If objFSO.FolderExists(objFolder.Name & "\Appdata\Roaming") Then
			Set objUserFolder = objFSO.GetFolder(objFolder.Name & "\Appdata\Roaming")
		End If
		If objFSO.FolderExists(objFolder.Name & "\local") Then
			Set objUserFolder = objFSO.GetFolder(objFolder.Name & "\Appdata\Roaming")
		End If
End If
Sub RemoveMozilla (ParentFolder)
	Dim objSubFolder	
	For each objSubFolder in ParentFolder.SubFolders
		If objRegEx.Test(objSubFolder.Name) then
			msgbox "Would Remove " & objsubfolder.Path
			' Uncomment to actually Delete
			' objSubFolder.Delete True
		End If
End Sub

Open in new window


Sorry for the late response, I finally tried the scripts and none of them deleted the Mozilla folders from appdata\roaming or appdata\local. In each script I made sure to uncomment line objSubFolder.Delete True. Thanks again.
This one is on us!
(Get your first solution completely free - no credit card required)


Ok this one worked great. Your objfolder.delete was already uncommented, lol. No biggie, it did what it was supposed to do, thanks. I made one change, since I want this to run silently, I removed the options for the message box popup. Thanks for being patient with me on this.

Gain unlimited access to on-demand training courses with an Experts Exchange subscription.

Get Access
Why Experts Exchange?

Experts Exchange always has the answer, or at the least points me in the correct direction! It is like having another employee that is extremely experienced.

Jim Murphy
Programmer at Smart IT Solutions

When asked, what has been your best career decision?

Deciding to stick with EE.

Mohamed Asif
Technical Department Head

Being involved with EE helped me to grow personally and professionally.

Carl Webster
CTP, Sr Infrastructure Consultant
Empower Your Career
Did You Know?

We've partnered with two important charities to provide clean water and computer science education to those who need it most. READ MORE

Ask ANY Question

Connect with Certified Experts to gain insight and support on specific technology challenges including:

  • Troubleshooting
  • Research
  • Professional Opinions
Unlock the solution to this question.
Join our community and discover your potential

Experts Exchange is the only place where you can interact directly with leading experts in the technology field. Become a member today and access the collective knowledge of thousands of technology experts.

*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.