Jump to content
Sign in to follow this  
Pruttelpot

Here's my program, written to clean up a user profile.

Recommended Posts

Pruttelpot

So, here it is, my little program written to let users inside our organisation be able to clean up their own profiles. Also including some command line options.

Including loggings with timestamps and filecounts.

All comments and stuff are in dutch, any questions; let me know.

If you got better ways, also let me know!

Let me know what you think of it.

(I deleted some paths and stuff from the script to disguise the company name and profile functions.

; Geschreven door: 
;           Wilhelm-Jan Stiny
; Met dank aan de _FileListToArrayEx functie geschreven door SmOke_N op het AutoItScript.com forum.
;
;


#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <Array.au3>
#include <Date.au3>
#include <File.au3>
#include <ProgressConstants.au3>
#NoTrayIcon





; Begin GUI:
    $Form1 = GUICreate("Het profiel opschonen voor *** gebruikers.", 335, 260, 193, 115)
    
    $ButCookies = GUICtrlCreateButton("Cookies", 8, 112, 97, 33, 0)
    $ButIEHistory = GUICtrlCreateButton("IE History", 232, 64, 97, 33, 0)
    $ButIECache = GUICtrlCreateButton("IE Cache", 8, 64, 97, 33, 0)
    $ButCleanAll = GUICtrlCreateButton("Clean All", 232, 112, 97, 33, 0)
    $ButJavaCache = GUICtrlCreateButton("Java Cache", 120, 112, 97, 33, 0)
    $ButIETemp = GUICtrlCreateButton("Temp", 120, 64, 97, 33, 0)
    $ButExit = GUICtrlCreateButton("Exit", 272, 215, 49, 33, 0)

    $progressBar = GUICtrlCreateProgress(30, 208, 175, 33, $PBS_SMOOTH)
    $Label1 = GUICtrlCreateLabel("Clean up Cache en Cookies voor de volgende gebruiker: " & @UserName , 16, 8, 360, 17, 0)
    $Label2 = GUICtrlCreateLabel("0..........25..........50..........75..........100%", 28, 195, 360, 17, 0)
    $Label3 = GUICtrlCreateLabel("Voortgang status:", 28, 175, 360, 17, 0)
    GUISetState(@SW_SHOW)
; Einde GUI 

; Logfile Global:
$logfile = "**PathToLogFile**" & @UserName & ".txt"

; Wegschrijven gebruikersnaam en datum + tijd naar logfile:
            $tCur = _Date_Time_GetLocalTime()
            $file = FileOpen($logfile, 1)
            FileWriteLine($file, @UserName & " Tijd Gestart:   " & _Date_Time_SystemTimeToDateTimeStr($tCur))
            FileClose($file)
; Einde wegschrijven timestamp.

; _FileListToArray functie:
; Alle files recursive binnen een directory in een array zetten.
; Handig voor het recursive opschonen van directorys.
Func _FileListToArrayEx($sPath, $sFilter = '*.*', $iFlag = 0, $sExclude = '', $iRecurse = True)
    If Not FileExists($sPath) Then Return SetError(1, 1, '')
    If $sFilter = -1 Or $sFilter = Default Then $sFilter = '*.*'
    If $iFlag = -1 Or $iFlag = Default Then $iFlag = 0
    If $sExclude = -1 Or $sExclude = Default Then $sExclude = ''
    Local $aBadChar[6] = ['\', '/', ':', '>', '<', '|']
    $sFilter = StringRegExpReplace($sFilter, '\s*;\s*', ';')
    If StringRight($sPath, 1) <> '\' Then $sPath &= '\'
    For $iCC = 0 To 5
        If StringInStr($sFilter, $aBadChar[$iCC]) Or _
            StringInStr($sExclude, $aBadChar[$iCC]) Then Return SetError(2, 2, '')
    Next
    If StringStripWS($sFilter, 8) = '' Then Return SetError(2, 2, '')
    If Not ($iFlag = 0 Or $iFlag = 1 Or $iFlag = 2) Then Return SetError(3, 3, '')
    Local $oFSO = ObjCreate("Scripting.FileSystemObject"), $sTFolder
    $sTFolder = $oFSO.GetSpecialFolder(2)
    Local $hOutFile = @TempDir & $oFSO.GetTempName
    If Not StringInStr($sFilter, ';') Then $sFilter &= ';'
    Local $aSplit = StringSplit(StringStripWS($sFilter, 8), ';'), $sRead, $sHoldSplit
    For $iCC = 1 To $aSplit[0]
        If StringStripWS($aSplit[$iCC],8) = '' Then ContinueLoop
        If StringLeft($aSplit[$iCC], 1) = '.' And _
            UBound(StringSplit($aSplit[$iCC], '.')) - 2 = 1 Then $aSplit[$iCC] = '*' & $aSplit[$iCC]
        $sHoldSplit &= '"' & $sPath & $aSplit[$iCC] & '" '
    Next
    $sHoldSplit = StringTrimRight($sHoldSplit, 1)
    If $iRecurse Then
        RunWait(@Comspec & ' /c dir /b /s /a ' & $sHoldSplit & ' > "' & $hOutFile & '"', '', @SW_HIDE)
    Else
        RunWait(@ComSpec & ' /c dir /b /a ' & $sHoldSplit & ' /o-e /od > "' & $hOutFile & '"', '', @SW_HIDE)
    EndIf
    $sRead &= FileRead($hOutFile)
    If Not FileExists($hOutFile) Then Return SetError(4, 4, '')
    FileDelete($hOutFile)
    If StringStripWS($sRead, 8) = '' Then SetError(4, 4, '')
    Local $aFSplit = StringSplit(StringTrimRight(StringStripCR($sRead), 1), @LF)
    Local $sHold
    For $iCC = 1 To $aFSplit[0]
        If $sExclude And StringLeft($aFSplit[$iCC], _
            StringLen(StringReplace($sExclude, '*', ''))) = StringReplace($sExclude, '*', '') Then ContinueLoop
        Switch $iFlag
            Case 0
                If StringRegExp($aFSplit[$iCC], '\w:\\') = 0 Then
                    $sHold &= $sPath & $aFSplit[$iCC] & Chr(1)
                Else
                    $sHold &= $aFSplit[$iCC] & Chr(1)
                EndIf
            Case 1
                If StringInStr(FileGetAttrib($sPath & '\' & $aFSplit[$iCC]), 'd') = 0 And _
                    StringInStr(FileGetAttrib($aFSplit[$iCC]), 'd') = 0 Then
                    If StringRegExp($aFSplit[$iCC], '\w:\\') = 0 Then
                        $sHold &= $sPath & $aFSplit[$iCC] & Chr(1)
                    Else
                        $sHold &= $aFSplit[$iCC] & Chr(1)
                    EndIf
                EndIf
            Case 2
                If StringInStr(FileGetAttrib($sPath & '\' & $aFSplit[$iCC]), 'd') Or _
                    StringInStr(FileGetAttrib($aFSplit[$iCC]), 'd') Then
                    If StringRegExp($aFSplit[$iCC], '\w:\\') = 0 Then
                        $sHold &= $sPath & $aFSplit[$iCC] & Chr(1)
                    Else
                        $sHold &= $aFSplit[$iCC] & Chr(1)
                    EndIf
                EndIf
        EndSwitch
    Next
    If StringTrimRight($sHold, 1) Then Return StringSplit(StringTrimRight($sHold, 1), Chr(1))
    Return SetError(4, 4, '')
EndFunc
; Einde

; Clean cookies functie:
Func _CleanCookies() 
; Eerst even checken of de koekjes folder uberhaupt bestaat:
        If FileExists(@UserProfileDir & "\Cookies\") Then
            GUICtrlCreateLabel("Bezig Cookies te verwijderen:", 28, 155, 360, 17, 0)
            ; Set folder variabele.
                $CookieFolder = @UserProfileDir & "\Cookies\"
                
            ; Open logging en write line.
                        $tCur = _Date_Time_GetLocalTime()
                        $file = FileOpen($logfile, 1)
                        $size   = DirGetSize($CookieFolder,1)
                        FileWriteLine($file, @UserName & "  "& _Date_Time_SystemTimeToDateTimeStr($tCur) & ": Cookies")
                        FileWriteLine($file, @UserName & "  "& _Date_Time_SystemTimeToDateTimeStr($tCur) &  ":   Hoeveelheid voor:" & $size[1])
            ; Logging klaar prt 1.
                    $fileList = _FileListToArrayEx($CookieFolder); 2 = folders!
                    Dim $found[1]
                        For $X = 1 To ubound($fileList) -1
                        FileDelete($fileList[$X])
                        _ArrayAdd($found, $CookieFolder & $fileList[$X])
                        $percentdone =  Ceiling(($X / ubound($fileList) )* 100 )
                        GUICtrlSetData($progressBar, $percentdone)
                    Next    
                        $found[0] = UBound($found)
                        ;MsgBox(64, "Cookies", "De cookies zijn verwijderd")
                            GUICtrlCreateLabel("De Cookies zijn verwijderd.", 28, 155, 360, 17, 0)
                            GUICtrlSetData($progressBar, 0)
                ; write line.
                    $sizeA   = DirGetSize($CookieFolder,1)
                    $tCur = _Date_Time_GetLocalTime()
                    FileWriteLine($file, @UserName & "  "& _Date_Time_SystemTimeToDateTimeStr($tCur) &  ":   Hoeveelheid na:" & $sizeA[1])
                    FileClose($file)
            ; Close logging prt 2
            
        Else
        ; Indien Cookie folder niet bestaat:
                GUICtrlCreateLabel("Cookie folder niet gevonden.", 28, 155, 360, 17, 0)
            ; Open logging en write line.   
                    $file = FileOpen($logfile, 1)
                    $tCur = _Date_Time_GetLocalTime()
                    FileWriteLine($file, @UserName & "  "& _Date_Time_SystemTimeToDateTimeStr($tCur) &  ": Cookie folder niet gevonden")
                    FileClose($file)
            ; Close logging.    
            EndIf   
EndFunc
; Einde

; Clean java cache functie
Func _CleanJavaCache()
    ; Eerst even checken of de Java cache folder uberhaupt bestaat:
        If FileExists(@UserProfileDir & "\Application Data\Sun\Java\Deployment\") Then
                GUICtrlCreateLabel("Bezig de Java Cache files te verwijderen", 28, 155, 360, 17, 0)
            ; Set folder.
                    $JavaFolder = @UserProfileDir & "\Application Data\Sun\Java\Deployment\"
            
                    ; Open logging en write line.
                            $tCur = _Date_Time_GetLocalTime()       
                            $file = FileOpen($logfile, 1)
                            $size   = DirGetSize($JavaFolder,1)
                            FileWriteLine($file, @UserName & "  "& _Date_Time_SystemTimeToDateTimeStr($tCur) &   ": Java Cache")
                            FileWriteLine($file, @UserName & "  "& _Date_Time_SystemTimeToDateTimeStr($tCur) &   ":  Hoeveelheid voor:" & $size[1])
                    ; Logging klaar prt 1.  
                
                    $fileList = _FileListToArrayEx($JavaFolder); 2 = folders!
                    Dim $found[1]
                        For $X = 1 To ubound($fileList) -1
                        FileDelete($fileList[$X])
                        _ArrayAdd($found, $JavaFolder & $fileList[$X])
                        $percentdone =  Ceiling(($X / ubound($fileList) )* 100 )
                        GUICtrlSetData($progressBar, $percentdone)
                    Next    
                        $found[0] = UBound($found)
                    ;MsgBox(64, "Java Cache", "De Java cache files zijn verwijderd")
                        GUICtrlCreateLabel("De Java cache files zijn verwijderd", 28, 155, 360, 17, 0)
                        GUICtrlSetData($progressBar, 0)     
                    ; Open logging en write line.
                            $sizeA   = DirGetSize($JavaFolder,1)
                            $tCur = _Date_Time_GetLocalTime()
                            FileWriteLine($file, @UserName & "  "& _Date_Time_SystemTimeToDateTimeStr($tCur) &   ":  Hoeveelheid na:" & $sizeA[1])
                            FileClose($file)
                    ; Logging klaar prt 2.  
                    
        Else 
        ; Indien Javacache folder niet bestaat:     
            GUICtrlCreateLabel("Java cache folder niet gevonden.", 28, 155, 360, 17, 0)
                $file = FileOpen($logfile, 1)
                $tCur = _Date_Time_GetLocalTime()
                FileWriteLine($file, @UserName & "  "& _Date_Time_SystemTimeToDateTimeStr($tCur) &   ": Java folder niet gevonden")
                FileClose($file)
        ; Close logging.    
        EndIf   
EndFunc
; Einde 

; Clean IE History Functie
Func _CleanIEHistory()
; Eerst even checken of de History folder uberhaupt bestaat:
        If FileExists("***PathToHistoryFolder****") Then
            GUICtrlCreateLabel("Bezig de Internet Explorer History files te verwijderen:", 28, 155, 360, 17, 0)
            ; Set folder:
                $HistoryFolder = "***PathToHistoryFolder****"
                
                ; Open logging en write line.
                        $tCur = _Date_Time_GetLocalTime()
                        $file = FileOpen($logfile, 1)
                        $size = DirGetSize($HistoryFolder,1)
                        FileWriteLine($file, @UserName & "  "& _Date_Time_SystemTimeToDateTimeStr($tCur) & ": IE History")
                        FileWriteLine($file, @UserName & "  "& _Date_Time_SystemTimeToDateTimeStr($tCur) & ":    Hoeveelheid voor:" & $size[1])
                ; Logging klaar, prt 1
                    
                $fileList = _FileListToArrayEx($HistoryFolder); 2 = folders!
                Dim $found[1]
                    For $X = 1 To ubound($fileList) -1
                    FileDelete($fileList[$X])
                    _ArrayAdd($found, $HistoryFolder & $fileList[$X])
                    $percentdone =  Ceiling(($X / ubound($fileList) )* 100 )
                    GUICtrlSetData($progressBar, $percentdone)
                Next    
                    $found[0] = UBound($found)
                ;MsgBox(64, "Internet Explorer History", "De Internet Explorer History files zijn verwijderd")
                    GUICtrlSetData($progressBar, 0) 
                    GUICtrlCreateLabel("De Internet Explorer History files zijn verwijderd", 28, 155, 360, 17, 0)
                    
                ; write line.
                        $sizeA   = DirGetSize($HistoryFolder,1)
                        $tCur = _Date_Time_GetLocalTime()
                        FileWriteLine($file, @UserName & "  "& _Date_Time_SystemTimeToDateTimeStr($tCur) & ":    Hoeveelheid na:" & $sizeA[1])
                        FileClose($file)
                ; Close logging prt 2.
    
        Else
            GUICtrlCreateLabel("Internet Explorer History folder niet gevonden.", 28, 155, 360, 17, 0)
                $tCur = _Date_Time_GetLocalTime()           
                $file = FileOpen($logfile, 1)
                FileWriteLine($file, @UserName & "  "& _Date_Time_SystemTimeToDateTimeStr($tCur) & ": IE History folder niet gevonden")
                FileClose($file)    
        EndIf
EndFunc
; Einde
    
; Clean IE Cache functie
Func _CleanIECache()
; Eerst checken of de IE Cache folder uberhaupt bestaat:
        If FileExists("***PathToInternetCacheFOlder****") Then
            GUICtrlCreateLabel("Bezig de Internet Explorer Cache te verwijderen:", 28, 155, 360, 17, 0)
            
            ; Set folder:           
                $IECacheFolder = "***PathToInternetCacheFOlder****"
                
                ; Open Logging en write line:
                        $size = DirGetSize($IECacheFolder,1)
                        $tCur = _Date_Time_GetLocalTime()
                        $file = FileOpen($logfile, 1)
                        FileWriteLine($file, @UserName & "  " & _Date_Time_SystemTimeToDateTimeStr($tCur) &  ": IE Cache")
                        FileWriteLine($file, @UserName & "  " &  _Date_Time_SystemTimeToDateTimeStr($tCur) &  ":     Hoeveelheid voor:" & $size[1])
                ; Logging klaar prt 1.
                
                $fileList = _FileListToArrayEx($IECacheFolder); 2 = folders!
                Dim $found[1]
                    For $X = 1 To ubound($fileList) -1
                    FileDelete($fileList[$X])
                    _ArrayAdd($found, $IECacheFolder & $fileList[$X])
                    $percentdone =  Ceiling(($X / ubound($fileList) )* 100 )
                    GUICtrlSetData($progressBar, $percentdone)
                Next    
                    $found[0] = UBound($found)
                ;MsgBox(64, "Internet Explorer Cache", "De Internet Explorer Cache files zijn verwijderd")
                    GUICtrlSetData($progressBar, 0) 
                    GUICtrlCreateLabel("De Internet Explorer Cache files zijn verwijderd", 28, 155, 360, 17, 0)
                ; write line in lgging:
                        $sizeA   = DirGetSize($IECacheFolder,1)
                        $tCur = _Date_Time_GetLocalTime()
                        FileWriteLine($file, @UserName & "  " & _Date_Time_SystemTimeToDateTimeStr($tCur) &  ":  Hoeveelheid na:" & $sizeA[1])
                        FileClose($file)
                    
        Else; Als de IE cache folder pleite is:
            GUICtrlCreateLabel("Internet Explorer Cache folder niet gevonden.", 28, 155, 360, 17, 0)
                $file = FileOpen($logfile, 1)
                $tCur = _Date_Time_GetLocalTime()
                FileWriteLine($file, @UserName & "  " & _Date_Time_SystemTimeToDateTimeStr($tCur) &  ": IE Cache folder niet gevonden")
                FileClose($file)
        EndIf   
EndFunc
; Einde

; Clean IE Temp functie.
Func _CleanIETemp()
        ; Eerst even checken of de Windows temp folder uberhaupt bestaat:   
        If FileExists("***PathToWindowsTemp****") Then
            GUICtrlCreateLabel("Bezig de Temp files op te verwijderen:", 28, 155, 360, 17, 0)
            ; Set Folder:
                $IETemp = "***PathToWindowsTemp***"
                ; Open logging en write line:
                        $file = FileOpen($logfile, 1)
                        $tCur = _Date_Time_GetLocalTime()
                        $size   = DirGetSize($IETemp,1)
                        FileWriteLine($file, @UserName & "  "& _Date_Time_SystemTimeToDateTimeStr($tCur) &  ": Windows Temp")
                        FileWriteLine($file, @UserName & "  "& _Date_Time_SystemTimeToDateTimeStr($tCur) &  ":   Hoeveelheid voor:" & $size[1]) 
                ; Logging klaar, prt 1.
                
                $fileList = _FileListToArrayEx($IETemp); 2 = folders!
                Dim $found[1]
                    For $X = 1 To ubound($fileList) -1
                    FileDelete($fileList[$X])
                    _ArrayAdd($found, $IETemp & $fileList[$X])
                    $percentdone =  Ceiling(($X / ubound($fileList) )* 100 )
                    GUICtrlSetData($progressBar, $percentdone)
                Next    
                    $found[0] = UBound($found)
                ;MsgBox(64, "Temp Folders", "De Temp files zijn verwijderd")
                    GUICtrlSetData($progressBar, 0) 
                    GUICtrlCreateLabel("De Temp files zijn verwijderd", 28, 155, 360, 17, 0)
                ; Write Line:
                        $sizeA   = DirGetSize($IETemp,1)
                        $tCur = _Date_Time_GetLocalTime()
                        FileWriteLine($file, @UserName & "  " & _Date_Time_SystemTimeToDateTimeStr($tCur) & ":   Hoeveelheid na:" & $sizeA[1])
                        FileClose($file)
                ; Logging klaar prt 2.
                
        Else; Als de windows temp folder niet bestaat:
            GUICtrlCreateLabel("Windows Temp folder niet gevonden.", 28, 155, 360, 17, 0)   
                $file = FileOpen($logfile, 1)
                $tCur = _Date_Time_GetLocalTime()
                FileWriteLine($file, @UserName & "  " & _Date_Time_SystemTimeToDateTimeStr($tCur) &  ": Windows Temp folder niet gevonden")
                FileClose($file)
        EndIf   
EndFunc
; Einde.


; Einde Functie definities.




; Begin button functie definities:
While 1
    $nMsg = GUIGetMsg()
    Select
        Case $nMsg = $GUI_EVENT_CLOSE
            Exit
        
    Case $nMsg = $ButCookies
        _CleanCookies()
                    
    Case $nMsg = $ButJavaCache
        _CleanJavaCache()
            
    Case $nMsg = $ButIEHistory
        _CleanIEHistory()
                
    Case $nMsg = $ButIECache
        _CleanIECache()

    Case $nMsg = $ButIETemp
        _CleanIETemp()
        
    Case $nMsg = $ButCleanAll
        _CleanCookies()
        GUICtrlSetData($progressBar, 20)
        Sleep(1000) 
        _CleanJavaCache()
        GUICtrlSetData($progressBar, 40)
        Sleep(1000) 
        _CleanIEHistory()
        GUICtrlSetData($progressBar, 60)
        Sleep(1000)     
        _CleanIECache()
        GUICtrlSetData($progressBar, 80)
        Sleep(1000)
        _CleanIETemp()
        GUICtrlSetData($progressBar, 100)

    Case $CmdLineRaw = "/C"
        GUISetState(@SW_HIDE)
        _CleanCookies()
        Exit

    Case $CmdLineRaw = "/J"
        GUISetState(@SW_HIDE) 
        _CleanJavaCache()
        Exit
        
    Case $CmdLineRaw = "/I"
        GUISetState(@SW_HIDE) 
        _CleanIECache()
        Exit    
    
    Case $CmdLineRaw = "/H"
        GUISetState(@SW_HIDE) 
        _CleanIEHistory()
        Exit        
        
    Case $CmdLineRaw = "/T"
        GUISetState(@SW_HIDE) 
        _CleanIETemp()
        Exit        
        
    Case $CmdLineRaw = "/?"
        GUISetState(@SW_HIDE)
                MsgBox(64,"Command Line Opties", "De volgende command line opties zijn mogelijk, combinaties kunnen niet, slechts 1 per keer." & @CRLF & "/A = Alles"& @CRLF &"/C = Cookies"& @CRLF & "/J = Java"& @CRLF & "/I = IE Cache" & @CRLF &"/H = IE History" & @CRLF &"/T = Windows Temp")
        Exit        
        
    Case $CmdLineRaw = "/A"
        GUISetState(@SW_HIDE)
        _CleanCookies()
    ;GUICtrlSetData($progressBar, 20)
        Sleep(1000) 
        _CleanJavaCache()
    ;GUICtrlSetData($progressBar, 40)
        Sleep(1000) 
        _CleanIEHistory()
    ;GUICtrlSetData($progressBar, 60)
        Sleep(1000)     
        _CleanIECache()
    ;GUICtrlSetData($progressBar, 80)
        Sleep(1000)
        _CleanIETemp()
    ;GUICtrlSetData($progressBar, 100)
                    ;MsgBox(1,"Alles opties","Clean All gedraait.")
        Exit

        
    Case $nMsg = $ButExit
            Exit


EndSelect
WEnd
; Einde Button functie definities.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.