Pruttelpot Posted April 1, 2009 Posted April 1, 2009 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. expandcollapse popup; 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.
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now