Windows Vista Forums
Vista Forums Home Join Vista Forums Windows 7 Forum Vista Tutorials Tags
Welcome to Windows Vista Forums. Our forum is dedicated to helping you find solutions with any problems, errors or issues you are experiencing with Windows Vista. The Vista forum also covers news and updates and has an extensive Windows Vista tutorial section that covers a wide range of tips and tricks.

Go Back   Vista Forums > Misc Newsgroups > VB Script

Vista - Delete Folders using WMI

Reply
 
Old 06-29-2009   #1 (permalink)
Babu VT


 
 

Delete Folders using WMI

Hi,
I'm trying to clean "$NTUninstall..." folders from remote machines and found
the below snippet useful.Unfortunately it isn't deleting any folders.Can
someone point me where is the fault... I can't use FSO objects since I need
to delete folders in multiple machines where C$ shares might not be
available.

strComputer ="."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
strQueryString1 = "Select * from Win32_Directory where Name = '" &
OSRootDir & "'"
Set colSubfolders = objWMIService.ExecQuery (strQueryString1)
For Each objFolder in colSubfolders
If Instr( UCase(objFolder.Name), "$NTUNINSTALL" ) > 0 then
strReport = strReport & "Deleted :" & strcomputer & ":" & objFolder.Name
& " uninstall folder" & vbCrLf
objFolder.delete
End If

Next



My System SpecsSystem Spec
Old 06-29-2009   #2 (permalink)
Pegasus [MVP]


 
 

Re: Delete Folders using WMI


"Babu VT" <babuvt@xxxxxx> wrote in message
news:uFeetFN%23JHA.1248@xxxxxx
Quote:

> Hi,
> I'm trying to clean "$NTUninstall..." folders from remote machines and
> found the below snippet useful.Unfortunately it isn't deleting any
> folders.Can someone point me where is the fault... I can't use FSO objects
> since I need to delete folders in multiple machines where C$ shares might
> not be available.
>
> strComputer ="."
> Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
> strQueryString1 = "Select * from Win32_Directory where Name = '" &
> OSRootDir & "'"
> Set colSubfolders = objWMIService.ExecQuery (strQueryString1)
> For Each objFolder in colSubfolders
> If Instr( UCase(objFolder.Name), "$NTUNINSTALL" ) > 0 then
> strReport = strReport & "Deleted :" & strcomputer & ":" & objFolder.Name
> & " uninstall folder" & vbCrLf
> objFolder.delete
> End If
>
> Next
You need to assign a value to OSRootDir, e.g. "c:\\Windows". Alternatively
this Scripting Guy item might help:
How Can I Delete a Folder and All Its Subfolders?
http://www.microsoft.com/technet/scr...5/hey0405.mspx


My System SpecsSystem Spec
Old 06-30-2009   #3 (permalink)
Mark D. MacLachlan


 
 

Re: Delete Folders using WMI

Babu VT wrote:
Quote:

> Hi,
> I'm trying to clean "$NTUninstall..." folders from remote machines
> and found the below snippet useful.Unfortunately it isn't deleting
> any folders.Can someone point me where is the fault... I can't use
> FSO objects since I need to delete folders in multiple machines where
> C$ shares might not be available.
>
> strComputer ="."
> Set objWMIService = GetObject("winmgmts:\\" & strComputer &
> "\root\cimv2") strQueryString1 = "Select * from Win32_Directory where
> Name = '" & OSRootDir & "'" Set colSubfolders =
> objWMIService.ExecQuery (strQueryString1) For Each objFolder in
> colSubfolders If Instr( UCase(objFolder.Name), "$NTUNINSTALL" ) > 0
> then strReport = strReport & "Deleted :" & strcomputer & ":" &
> objFolder.Name & " uninstall folder" & vbCrLf objFolder.delete
> End If
>
> Next
Rather than just deleting the uninstalls, I prefer to check the age of
the folders just to be sure it is safe to remove them. That is why I
wrote the following which will only delete the folders if they are more
than 2 weeks old.

Code:
'=======================================================================
===
'
' NAME: CleanHotfixUninstalls.vbs
'
' AUTHOR: Mark D. MacLachlan , The Spider's Parlor
' URL   : http://www.thespidersparlor.com
' COPYRIGHT (c) 2008 All rights reserved
' DATE  : 05/07/2008
'
' COMMENT:
'
' This script will enumerate Uninstall folders under the Windows
directory
' and delete them if they are more than two weeks old
'
'
'    THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
'    ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
'    THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
'    PARTICULAR PURPOSE.
'
'    IN NO EVENT SHALL THE SPIDER'S PARLOR AND/OR ITS RESPECTIVE
SUPPLIERS
'    BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
'    DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
'    WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
'    ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
'    OF THIS CODE OR INFORMATION.
'=====================================
Dim fso, WshShell
Dim oFolder, oSubFolder

Set fso = CreateObject("Scripting.FileSystemObject")
Set WshShell=CreateObject("WScript.Shell")
WinDir = WshShell.ExpandEnvironmentStrings("%WinDir%")

Path = WinDir

Set oFolder = fso.GetFolder(Path)
Set colSubfolders = oFolder.Subfolders

For Each oSubfolder in colSubfolders
If Left(oSubFolder.Name,1) = "$" Then
If Right(oSubFolder.Name,1) = "$" Then
'If DateDiff("d", oSubFolder.DateCreated,Now) > 14 Then
fso.DeleteFolder(oSubFolder)
'End If
End If
End If
Next

Set oSubFolder = Nothing
Set oFolder = Nothing
Set fso = Nothing
--

My System SpecsSystem Spec
Old 07-01-2009   #4 (permalink)
Mark D. MacLachlan


 
 

Re: Delete Folders using WMI

Just realized the posted version had the two week check commented out.

Code:
'=======================================================================
===
'
' NAME: CleanHotfixUninstalls.vbs
'
' AUTHOR: Mark D. MacLachlan , The Spider's Parlor
' URL   : http://www.thespidersparlor.com
' COPYRIGHT (c) 2008 All rights reserved
' DATE  : 05/07/2008
'
' COMMENT:
'
' This script will enumerate Uninstall folders under the Windows
directory
' and delete them if they are more than two weeks old
'
'
'    THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
'    ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
'    THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
'    PARTICULAR PURPOSE.
'
'    IN NO EVENT SHALL THE SPIDER'S PARLOR AND/OR ITS RESPECTIVE
SUPPLIERS
'    BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
'    DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
'    WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
'    ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
'    OF THIS CODE OR INFORMATION.
'=====================================
Dim fso, WshShell
Dim oFolder, oSubFolder

Set fso = CreateObject("Scripting.FileSystemObject")
Set WshShell=CreateObject("WScript.Shell")
WinDir = WshShell.ExpandEnvironmentStrings("%WinDir%")

Path = WinDir

Set oFolder = fso.GetFolder(Path)
Set colSubfolders = oFolder.Subfolders

For Each oSubfolder in colSubfolders
If Left(oSubFolder.Name,1) = "$" Then
If Right(oSubFolder.Name,1) = "$" Then
If DateDiff("d", oSubFolder.DateCreated,Now) > 14 Then
fso.DeleteFolder(oSubFolder)
End If
End If
End If
Next

Set oSubFolder = Nothing
Set oFolder = Nothing
Set fso = Nothing
My System SpecsSystem Spec
Old 07-02-2009   #5 (permalink)
Mark D. MacLachlan


 
 

Re: Delete Folders using WMI

Sorry for the repost, but I noticed I had the date checks commented out
on the previously posted version.

Code:
'=======================================================================
===
'
' NAME: CleanHotfixUninstalls.vbs
'
' AUTHOR: Mark D. MacLachlan , The Spider's Parlor
' URL   : http://www.thespidersparlor.com
' COPYRIGHT (c) 2008 All rights reserved
' DATE  : 05/07/2008
'
' COMMENT:
'
' This script will enumerate Uninstall folders under the Windows
directory
' and delete them if they are more than two weeks old
'
'
'    THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
'    ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
'    THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
'    PARTICULAR PURPOSE.
'
'    IN NO EVENT SHALL THE SPIDER'S PARLOR AND/OR ITS RESPECTIVE
SUPPLIERS
'    BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
'    DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
'    WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
'    ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
'    OF THIS CODE OR INFORMATION.
'=====================================
Dim fso, WshShell
Dim oFolder, oSubFolder

Set fso = CreateObject("Scripting.FileSystemObject")
Set WshShell=CreateObject("WScript.Shell")
WinDir = WshShell.ExpandEnvironmentStrings("%WinDir%")

Path = WinDir

Set oFolder = fso.GetFolder(Path)
Set colSubfolders = oFolder.Subfolders

For Each oSubfolder in colSubfolders
If Left(oSubFolder.Name,1) = "$" Then
If Right(oSubFolder.Name,1) = "$" Then
If DateDiff("d", oSubFolder.DateCreated,Now) > 14 Then
fso.DeleteFolder(oSubFolder)
End If
End If
End If
Next

Set oSubFolder = Nothing
Set oFolder = Nothing
Set fso = Nothing
My System SpecsSystem Spec
Reply

Thread Tools


Similar Threads
Thread Forum
Can't delete folders Vista mail
delete folders Vista mail
is there a way to delete all the IE folders Network & Sharing
Cannot delete folders Vista General
Folders won't delete Vista file management


Vista Forums is an independent web site and has not been authorized,
sponsored, or otherwise approved by Microsoft Corporation.
"Windows Vista", the Start Orb, and related materials are trademarks of Microsoft Corp.
© Designer Media Ltd

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46