xzay1967
asked on
VB script to delete folder
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.
ASKER
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>\appdat a\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:
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.
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
Next
msgbox "**** Done ****"
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)")
RemoveMozilla(objFolder)
End If
If objFSO.FolderExists("C:\ProgramData") Then
Set objFolder = objFSO.GetFolder("C:\ProgramData")
RemoveMozilla(objFolder)
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")
RemoveMozilla(objFolder)
End If
If objFSO.FolderExists(objFolder.Name & "\local") Then
Set objUserFolder = objFSO.GetFolder(objFolder.Name & "\Appdata\Roaming")
RemoveMozilla(objFolder)
End If
Next
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
Next
End Sub
ASKER
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.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
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.
pls try
Open in new window
Regards