Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Delete Folders using WMI

133 views
Skip to first unread message

Babu VT

unread,
Jun 29, 2009, 11:51:08 AM6/29/09
to
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


Pegasus [MVP]

unread,
Jun 29, 2009, 1:02:27 PM6/29/09
to

"Babu VT" <bab...@hotmail.com> wrote in message
news:uFeetFN%23JHA...@TK2MSFTNGP04.phx.gbl...

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/scriptcenter/resources/qanda/apr05/hey0405.mspx


Mark D. MacLachlan

unread,
Jun 30, 2009, 11:57:01 PM6/30/09
to
Babu VT wrote:

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
[/code]

--

Mark D. MacLachlan

unread,
Jul 1, 2009, 3:11:26 PM7/1/09
to
Just realized the posted version had the two week check commented out.

Mark D. MacLachlan

unread,
Jul 2, 2009, 12:33:12 AM7/2/09
to
Sorry for the repost, but I noticed I had the date checks commented out
on the previously posted version.
0 new messages