souldjer777 Posted October 22, 2012 Share Posted October 22, 2012 _FileListToArray - I want to remove any "temp" directories from the array Hi All, This is what I have so far and I always drive my self crazy when it comes to arrays so yes, I'm giving up... asking for help lol. Sorry if I'm a newb but I love this program, forum and culture - you guys are the best! Thanks! Trying to remove any "Temp" directory from the $Filelist array - and I have a whole bunch of others listed in my notes. For now I'm testing on my D: drive for a temp directory... but I would like to delete any C:\Documents and Settings\ for any user folder not system related. We have devices that everyone logs into and it clusters things up. expandcollapse popup#include <Array.au3> #include <File.au3> #RequireAdmin Global $ProgramTitle1, $FileList, $sPath $ProgramTitle1 = "Test" SplashTextOn($ProgramTitle1, "Creating file list for D:\", 400, 40, -1, -1, 2, "", 10) Sleep (2000) $sPath = "D:\" $FileList = _FileListToArray($sPath , "*" , 2) SplashOff() If @error = 1 Then MsgBox(0, "", "Path not found or invalid") Exit EndIf If @error = 4 Then MsgBox(0, "", "No File(s) Found") Exit EndIf _ArrayDisplay($FileList, "Before") Local $rows = UBound($FileList) Local $cols = UBound($FileList, 2) Local $dims = UBound($FileList, 0) MsgBox(0, "The " & $dims & "-dimensional array has", _ $rows & " rows, " & $cols & " columns") ; Work in progress AKA I have no idea what I'm doing and I'm trying to get it right lol... For $i = 1 To $FileList[0] If $FileList[$i] == "Temp" Then _ArrayDelete($FileList, $i) Next _ArrayDisplay($FileList, "After") ;Note to self "Administrator" or "All Users" or "Default User" or "LocalService" or "NetworkService" or @UserName "Maybe I'm on a road that ain't been paved yet. And maybe I see a sign that ain't been made yet"Song Title: I guess you could sayArtist: Middle Class Rut Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted October 22, 2012 Moderators Share Posted October 22, 2012 souldjer777,Take a look at the RecFileListToArray UDF in my sig - that allows you to define folder names that are not listed in the return. Please ask again if you need more help. M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area Link to comment Share on other sites More sharing options...
BrewManNH Posted October 22, 2012 Share Posted October 22, 2012 If you're looking to delete user's folders other than the default ones, such as Administrator/Default User/All Users (xp and below), then you might want to take a look at the link in my signature for how I gathered the user folders in a script I posted that I use to back up user's folders. This script should work on XP or above, and you can modify it as needed to do what you're looking to do. If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag GudeHow to ask questions the smart way! I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from. Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays. - ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script. - Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label. - _FileGetProperty - Retrieve the properties of a file - SciTE Toolbar - A toolbar demo for use with the SciTE editor - GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI. - Latin Square password generator Link to comment Share on other sites More sharing options...
souldjer777 Posted October 22, 2012 Author Share Posted October 22, 2012 (edited) First and foremost... And yes... you guys are the bomb diggity! I felt like I needed to post my program because otherwise what's the point of asking and never having the question / answer provided... Here's a program to delete temp files and extra profiles in XP. !!! Use on a test device ONLY !!! I'm NEW so I know I could've looped through dir1 to dir3... it's just easier for me to read right now and loops in loops are tough so... Notes For Program Below: Password is "test123" obviously. Deletes files and folders in the following: $dir1 = "C:Cache_Directory" $dir2 = "C:Temp" $dir3 = "C:WindowsTemp" $sPath1 = "C:Documents and Settings" Excluded Folders in "C:Documents and Settings" are.. Administrator; All Users; Default User; LocalService; NetworkService; CURRENT_USER or @Username; Modify the program to suit your purpose expandcollapse popup#Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_Icon=trash.ico #AutoIt3Wrapper_Res_Fileversion=10.0.0.57 #AutoIt3Wrapper_Res_Fileversion_AutoIncrement=y #AutoIt3Wrapper_Run_Obfuscator=y #Obfuscator_Parameters=/cs /cn /cf /cv /sf /sv #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** #include <File.au3> #include <Array.au3> #include "RecFileListToArray.au3" #RequireAdmin ; The above include file is not a normal of of the box autoit function "RecFileListToArray.au3" - you have to download it from autoitscript.com RecFileListToArray.au3 ; Thanks Melba23 - You have my vote to include this in the next ver of AutoIT! ;Func _RecFileListToArray($sInitialPath, $sInclude_List = "*", $iReturn = 0, $iRecur = 0, $iSort = 0, $iReturnPath = 1, $sExclude_List = "", $sExclude_List_Folder = "") Global $msgboxans1, $ProgramTitle1, $ExcludeFolders1, $dir1, $dir1array1, $dir2, $dir2array2, $dir3, $dir3array3, $sPath1, $sPath1Array1 $ProgramTitle1 = "Delete Temp Files" Call ("PassFunc1") Func PassFunc1() $pass1=InputBox($ProgramTitle1,'Password:','password','*',200,200) If @error Then Exit EndIf If Not @error and $pass1=='test123' Then Call ("IsThisTestPc1") EndIf If $pass1 <> 'test123' Then SplashTextOn($ProgramTitle1, "Password Incorrect - 5 Second Delay", 400, 40, -1, -1, 2, "", 0) Sleep(5000) SplashOff() Call ("PassFunc1") EndIf EndFunc Func IsThisTestPc1() $msgboxans1 = MsgBox(4, $ProgramTitle1, "! ! ! Test PC's ONLY ! ! !" & @CR & @CR & "Is this a test pc?") If $msgboxans1 = 6 Then Call ("DeleteFiles1") If $msgboxans1 = 7 Then MsgBox (0, $ProgramTitle1, "Please move to a test device.") Exit EndIf EndFunc Func DeleteFiles1() ; Directory 1 $dir1 = "C:Cache_Directory" SplashTextOn ($ProgramTitle1, "Checking Directory: " & $dir1, 400, 40, -1, -1, 2, "", 10) Sleep(2000) SplashOff() $dir1array1 = _RecFileListToArray($dir1, "*", 0, 1, 0) If IsArray($dir1array1) <> 1 Then Call ("DeleteFiles2") If IsArray($dir1array1) = 1 Then ; Uncomment the following line to see file / folder results... ;_ArrayDisplay ($dir1array1, "The array") SplashTextOn ($ProgramTitle1, "Deleting files from " & $dir1, 400, 40, -1, -1, 2, "", 10) Sleep(2000) For $I1 = 1 To $dir1array1[0] ; $dir1array1 is an array and element [0] holds the number of files / dirs DirRemove ($dir1 & $dir1array1[$I1], 1) Next FileDelete ($dir1) SplashOff() Call ("DeleteFiles2") EndIf EndFunc Func DeleteFiles2() ; Directory 2 $dir2 = "C:Temp" SplashTextOn ($ProgramTitle1, "Checking Directory: " & $dir2, 400, 40, -1, -1, 2, "", 10) Sleep(2000) SplashOff() $dir2array2 = _RecFileListToArray($dir2, "*", 0, 1, 0) If IsArray($dir2array2) <> 1 Then Call ("DeleteFiles3") If IsArray($dir2array2) = 1 Then SplashTextOn ($ProgramTitle1, "Deleting files from " & $dir2, 400, 40, -1, -1, 2, "", 10) Sleep(2000) For $I2 = 1 To $dir2array2[0] DirRemove ($dir2 & $dir2array2[$I2], 1) Next FileDelete ($dir2) SplashOff() Call ("DeleteFiles3") EndIf EndFunc Func DeleteFiles3() ; Directory 3 $dir3 = "C:WindowsTemp" SplashTextOn ($ProgramTitle1, "Checking Directory: " & $dir3, 400, 40, -1, -1, 2, "", 10) Sleep(2000) SplashOff() $dir3array3 = _RecFileListToArray($dir3, "*", 0, 1, 0) If IsArray($dir3array3) <> 1 Then Call ("DeleteProfiles1") If IsArray($dir3array3) = 1 Then SplashTextOn ($ProgramTitle1, "Deleting files from " & $dir3, 400, 40, -1, -1, 2, "", 10) Sleep(2000) For $I3 = 1 To $dir3array3[0] DirRemove ($dir3 & $dir3array3[$I3], 1) Next FileDelete ($dir3) SplashOff() Call ("DeleteProfiles1") EndIf EndFunc Func DeleteProfiles1() $sPath1 = "C:Documents and Settings" SplashTextOn($ProgramTitle1, "Creating file list for " & $sPath1, 400, 40, -1, -1, 2, "", 10) Sleep (2000) SplashOff() $ExcludeFolders1 = "Administrator;All Users;Default User;LocalService;NetworkService;" & @Username & ";" SplashTextOn($ProgramTitle1, "Excluding: " & $ExcludeFolders1, 800, 40, -1, -1, 2, "", 10) Sleep (2000) SplashOff() ;Func _RecFileListToArray($sInitialPath, $sInclude_List = "*", $iReturn = 0, $iRecur = 0, $iSort = 0, $iReturnPath = 1, $sExclude_List = "", $sExclude_List_Folder = "") $sPath1Array1 = _RecFileListToArray($sPath1, "*", 2, 0, 0, 1, $ExcludeFolders1) If IsArray($sPath1Array1) <> 1 Then Call ("ExitProgram1") If IsArray($sPath1Array1) = 1 Then For $I4 = 1 To $sPath1Array1[0] DirRemove ($sPath1 & $sPath1Array1[$I4], 1) Sleep (500) SplashTextOn ($ProgramTitle1, $sPath1 & $sPath1Array1[$I4] & " has been deleted recursively.", 400, 40, -1, -1, 2, "", 10) Sleep (2000) SplashOff() Next Call ("ExitProgram1") EndIf EndFunc Func ExitProgram1() SplashTextOn ($ProgramTitle1, "Deletion Process Completed", 400, 40, -1, -1, 2, "", 10) Sleep (2000) SplashOff() SplashTextOn ($ProgramTitle1, "Exiting...", 400, 40, -1, -1, 2, "", 10) Sleep (2000) SplashOff() Exit EndFunc Edited October 24, 2012 by souldjer777 "Maybe I'm on a road that ain't been paved yet. And maybe I see a sign that ain't been made yet"Song Title: I guess you could sayArtist: Middle Class Rut Link to comment Share on other sites More sharing options...
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