Paypal Donate

Delete temporary files from all users' profiles Popular

File

This script goes through all local profiles and deletes temporary files (including temporary internet files).

It deletes files from the Local Settings/Temp folder, Local Settings/Temporary Internet Files, and Windows/Temp (assuming Windows is installed to the Windows folder).

To process all local profiles, the script needs to be run with admin rights - it can be used as a log-off or shut-down GPO script to keep machines free from temp files.  I tend to just run it every now and again, or schedule it once a week.

If you run the script from the command-line, either change the default script processor to cscript (means you don't get message pop-ups), or create a batch file that runs the script using cscript (as opposed to wscript).

IMPORTANT NOTE:  This script has only been tested under Windows 2000 and Windows XP.  Chances are it won't work under Vista and Windows 7, due to path changes and permissions.

' Script written by David Barrett
' Copyright 2009
' http://www.cedit.biz/ 
' This script is licensed under the Creative Commons
' Attribution 2.5 Licence
' http://creativecommons.org/licenses/by/2.5/ 
'
' You are free to use it for both personal and
' commercial purposes, so long as full attribution
' is given to the author (David Barrett).
'
' This notice must not be removed
'
'

force_cscript

dim objWSH, sProfile, objFolder
dim objFSO, sProfileRoot, objProfileFolder
dim sTemp, sWindows

set objFSO=CreateObject("Scripting.FileSystemObject")

' Get user profile root folder
set objWSH    = CreateObject("WScript.Shell")
sTemp = objWSH.ExpandEnvironmentStrings("%TEMP%")
sWindows = objWSH.ExpandEnvironmentStrings("%WINDIR%")
sProfile = objWSH.ExpandEnvironmentStrings("%USERPROFILE%")
sProfileRoot=objFSO.GetFolder(sProfile).ParentFolder.Path
set objWSH=nothing

set objProfileFolder=objFSO.GetFolder(sProfileRoot)
for each objFolder in objProfileFolder.SubFolders
    select case LCase(objFolder.Name)
        case "all users": ' do nothing
        case "default user": ' do nothing
        case "localservice": ' do nothing
        case "networkservice": ' do nothing
        case else:
            wscript.echo "Processing profile: " & objFolder.Name
            sProfile=sProfileRoot & "\" & objFolder.Name
            DeleteFolderContents sProfile & "\Local Settings\Temp"
            DeleteFolderContents sProfile & "\Local Settings\Temporary Internet Files\Content.IE5"
            DeleteFolderContents sProfile & "\Local Settings\Temporary Internet Files"
    end select
next
' Now delete the folder given by the TEMP environment variable
wscript.echo "Processing folder: " & sTemp
DeleteFolderContents sTemp
' And the windows\temp folder
wscript.echo "Processing folder: " & sWindows & "\Temp"
DeleteFolderContents sWindows & "\Temp"

sub DeleteFolderContents(strFolder)
    ' Deletes all files and folders within the given folder
    dim objFolder, objFile, objSubFolder
    on error resume next
    
    set objFolder=objFSO.GetFolder(strFolder)
    if Err.Number<>0 then
        Err.Clear
        Exit sub ' Couldn't get a handle to the folder, so can't do anything
    end if
    for each objSubFolder in objFolder.SubFolders
        objSubFolder.Delete true
        if Err.Number<>0 then
            'Try recursive delete (ensures better result)
            Err.Clear
            DeleteFolderContents(strFolder & "\" & objSubFolder.Name)
        end if
    next
    for each objFile in ObjFolder.Files
        objFile.Delete true
        if Err.Number<>0 then Err.Clear ' In case we couldn't delete a file
    next
end sub

sub force_cscript
    dim args : args=""
    dim i, wshshell
    If right(lCase(wscript.fullname),11)= "wscript.exe" then
        for i=0 to wscript.arguments.count-1
            args = args & wscript.arguments(i) & " "
        next
        set wshshell=createobject("wscript.shell")
        wshshell.run wshshell.ExpandEnvironmentStrings("%comspec%") & _
            " /c cscript.exe //nologo """ & wscript.scriptfullname & """" & args
        set wshshell=nothing
        wscript.quit
    end if
end sub


Copyright © 2009 www.cedit.biz. All rights reserved.