Carlo84 Posted August 25, 2014 Posted August 25, 2014 (edited) I remember when years ago and i still was fresh to this i was searching like a function like this all the time and trying to make one without much success. I guess i was over thinking all the loops at the time, guess i got a lil smarter with the years. xD cause it's really simple. Anyways this lists all sub-directories of a specified folder. [Edit] Don't be silly and try to scan your entire hdd it will take ages. it's not meant for huge file structures. Functions: _ListSubFolders Example: #include <Array.au3> #include "_ListSubFolders.au3" $sPath = @StartMenuDir $a = _ListSubFolders($sPath) ;~ List all sub-folders using full paths. If @error Then Exit 1 _ArrayDisplay($a) $a = _ListSubFolders($sPath, True) ;~ List all sub-folders using paths relative to the root directory. If @error Then Exit 2 _ArrayDisplay($a) UDF: expandcollapse popup#include-once #include <File.au3> ; #FUNCTION# ==================================================================================================================== ; Name...........: _ListSubFolders ; Description ...: Lists all the sub-folders of the rootdir in an array. ; Syntax.........: _ListSubFolders($sRoot, $vRelative = False) ; Parameters ....: $sRoot - The root dir to list sub-folders thereof. ; $vRelative - [optional] If True then relative paths to the root directory will be returned. default is False ; Return values .: Success - A one-dimensional array. ; $aArray[0] = Number of Folders returned ; $aArray[1] = 1st Folder ; $aArray[2] = 2nd Folder ; $aArray[3] = 3rd Folder ; Failure - sets the @error flag to non-zero ; @error - 1 - Folder not found or invalid ; 2 - No Folder(s) Found ; Author ........: Carlo Westmaas ; Modified.......: ; Remarks .......: ; Related .......: ; Link ..........: http://www.autoitscript.com/forum/topic/163773-udf-listsubfoldersau3/ ; Example .......: Yes ; =============================================================================================================================== Func _ListSubFolders($sRoot, $vRelative = False) Local $i, $aList[1], $iIndex = 1, $iCheck = 0 $aList = _FileListToArray($sRoot, '*', 2, True) If @error = 4 Then Return SetError(2, @extended, 0) If @error Then Return SetError(@error, @extended, 0) While 1 For $i = $iIndex To $aList[0] __ListSubFoldersOnce($aList, $aList[$i]) If Not @error Then $iCheck = -1 Next $iIndex = $aList[0] + 1 $aList[0] = UBound($aList) - 1 If $iCheck <> -1 Then ExitLoop $iCheck = 0 WEnd If $vRelative Then If StringRight($sRoot, 1) <> '\' Then $sRoot &= '\' For $i = 1 To $aList[0] $aList[$i] = StringReplace($aList[$i], $sRoot, '', 1) Next EndIf Return $aList EndFunc ;==>_ListSubFolders ; #FUNCTION# ==================================================================================================================== ; Name...........: __ListSubFoldersOnce ; Description ...: Internal function ; Author ........: Carlo Westmaas ; Link ..........: ; Example .......: No ; =============================================================================================================================== Func __ListSubFoldersOnce(ByRef $aArray, $sRoot) Local $i Local $aList = _FileListToArray($sRoot, '*', 2, True) If @error Then Return SetError(@error, @extended, 0) For $i = 1 To $aList[0] ReDim $aArray[UBound($aArray) + 1] $aArray[UBound($aArray) - 1] = $aList[$i] Next Return 1 EndFunc ;==>__ListSubFoldersOnce Edited August 25, 2014 by Carlo84 _SplashProgressImage | _Regionselector | _IsPressed360 | _UserAccountContol_SetLevel | _ListSubFolders
careca Posted August 26, 2014 Posted August 26, 2014 I could just as easily use #include <File.au3> #include <Array.au3> Local $Ar = _FileListToArrayRec ('D:\Mp3', "*", 2, 1, 0, 2) _ArrayDisplay($Ar) but, good work, i guess. Spoiler Renamer - Rename files and folders, remove portions of text from the filename etc. GPO Tool - Export/Import Group policy settings. MirrorDir - Synchronize/Backup/Mirror Folders BeatsPlayer - Music player. Params Tool - Right click an exe to see it's parameters or execute them. String Trigger - Triggers pasting text or applications or internet links on specific strings. Inconspicuous - Hide files in plain sight, not fully encrypted. Regedit Control - Registry browsing history, quickly jump into any saved key. Time4Shutdown - Write the time for shutdown in minutes. Power Profiles Tool - Set a profile as active, delete, duplicate, export and import. Finished Task Shutdown - Shuts down pc when specified window/Wndl/process closes. NetworkSpeedShutdown - Shuts down pc if download speed goes under "X" Kb/s. IUIAutomation - Topic with framework and examples Au3Record.exe
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