Iznogoud Posted April 11, 2007 Share Posted April 11, 2007 Hi, i am struggling to get a programm wich can tell me a number of total folders and subfolders in a specific directory. I have tried FileFindNextFile, but i can't figure it out. I have looked at some dos commands like DIR, Xcopy, FC, Tree, but they don't do the thing i want. Does someone know is someone already made a script like this or is there an easy way to make? Link to comment Share on other sites More sharing options...
jvanegmond Posted April 11, 2007 Share Posted April 11, 2007 Maybe _FileListToArray will do what you want. github.com/jvanegmond Link to comment Share on other sites More sharing options...
Iznogoud Posted April 11, 2007 Author Share Posted April 11, 2007 [offtopic] eeej, your image is Iznogoud VERY NICE ! ! [/offtopic] Ok, but this shows me all the info and i only want to know for an example that my C:\ drive has 10.356 folders. Nothing more. I will research the _FileListToArray anyway... Link to comment Share on other sites More sharing options...
jvanegmond Posted April 11, 2007 Share Posted April 11, 2007 [offtopic] eeej, your image is Iznogoud VERY NICE ! ! [/offtopic] Ok, but this shows me all the info and i only want to know for an example that my C:\ drive has 10.356 folders. Nothing more. I will research the _FileListToArray anyway...Your name suddenly reminded me of the cartoon I used to watch when I was a lot younger.. Anyway, I sometimes use StringSplit to count the amount of substrings in a string. So why would you not do this: #include <File.au3> $Dir = _FileListToArray(@HomeDrive,"*",2) MsgBox(0, "You have this many folders in " & @HomeDrive, $Dir[0]) github.com/jvanegmond Link to comment Share on other sites More sharing options...
Joon Posted April 11, 2007 Share Posted April 11, 2007 Try this; $folderName = "C:\Inetpub" $objWMIService = ObjGet("winmgmts:\\.\root\cimv2") $colSubfolders = $objWMIService.ExecQuery("Associators of {Win32_Directory.Name='" & $folderName & "'} " _ & "Where AssocClass = Win32_Subdirectory " _ & "ResultRole = PartComponent") MsgBox(0,'Number of folders',$colSubfolders.Count) Link to comment Share on other sites More sharing options...
Iznogoud Posted April 11, 2007 Author Share Posted April 11, 2007 (edited) I adjusted an did a trial and error on the example script in the help file.#Include <File.au3> #Include <Array.au3> $FileList=_FileListToArray(@DesktopDir, "*", 2) If @Error=1 Then MsgBox (0,"","No Files\Folders Found.") Exit EndIf MsgBox("", "Test", $FileList[0])This works great, i just tested it and so far it works . I will test it multiple times untill i know for sure it works as i wanted,-edit-Hmmm, i see you edited your script and we got exactly the same. Thanks for so far and i also will look at the solution Joon gave us. Edited April 11, 2007 by Iznogoud Link to comment Share on other sites More sharing options...
MrCreatoR Posted April 11, 2007 Share Posted April 11, 2007 See for function _DirListToArray() here, and use it like this:$FoldersCountArr = _DirListToArray($sDir) $FoldersCount = $FoldersCountArr[0] Spoiler Using OS: Win 7 Professional, Using AutoIt Ver(s): 3.3.6.1 / 3.3.8.1 AutoIt Russian Community My Work... Spoiler Projects: ATT - Application Translate Tool {new}| BlockIt - Block files & folders {new}| SIP - Selected Image Preview {new}| SISCABMAN - SciTE Abbreviations Manager {new}| AutoIt Path Switcher | AutoIt Menu for Opera! | YouTube Download Center! | Desktop Icons Restorator | Math Tasks | KeyBoard & Mouse Cleaner | CaptureIt - Capture Images Utility | CheckFileSize ProgramUDFs: OnAutoItErrorRegister - Handle AutoIt critical errors {new}| AutoIt Syntax Highlight {new}| Opera Library! | Winamp Library | GetFolderToMenu | Custom_InputBox()! | _FileRun UDF | _CheckInput() UDF | _GUIInputSetOnlyNumbers() UDF | _FileGetValidName() UDF | _GUICtrlCreateRadioCBox UDF | _GuiCreateGrid() | _PathSplitByRegExp() | _GUICtrlListView_MoveItems - UDF | GUICtrlSetOnHover_UDF! | _ControlTab UDF! | _MouseSetOnEvent() UDF! | _ProcessListEx - UDF | GUICtrl_SetResizing - UDF! | Mod. for _IniString UDFs | _StringStripChars UDF | _ColorIsDarkShade UDF | _ColorConvertValue UDF | _GUICtrlTab_CoverBackground | CUI_App_UDF | _IncludeScripts UDF | _AutoIt3ExecuteCode | _DragList UDF | Mod. for _ListView_Progress | _ListView_SysLink | _GenerateRandomNumbers | _BlockInputEx | _IsPressedEx | OnAutoItExit Handler | _GUICtrlCreateTFLabel UDF | WinControlSetEvent UDF | Mod. for _DirGetSizeEx UDF Examples: ScreenSaver Demo - Matrix included | Gui Drag Without pause the script | _WinAttach()! | Turn Off/On Monitor | ComboBox Handler Example | Mod. for "Thinking Box" | Cool "About" Box | TasksBar Imitation Demo Like the Projects/UDFs/Examples? Please rate the topic (up-right corner of the post header: Rating ) * === My topics === * ================================================== ================================================== AutoIt is simple, subtle, elegant. © AutoIt Team Link to comment Share on other sites More sharing options...
jvanegmond Posted April 11, 2007 Share Posted April 11, 2007 See for function _DirListToArray() here, and use it like this: $FoldersCountArr = _DirListToArray($sDir) $FoldersCount = $FoldersCountArr[0]_FileListToArray also only returns directory's with an option.. github.com/jvanegmond Link to comment Share on other sites More sharing options...
Iznogoud Posted April 11, 2007 Author Share Posted April 11, 2007 (edited) I see that _FileListToArray doesn't count the subfolders.I will check DirListToArray if that commands can check subfolders.-edit-I have made this code#Include <File.au3> #Include <Array.au3> $FoldersCountArr = _DirListToArray("D:\") $FoldersCount = $FoldersCountArr[0] MsgBox("", "Test", $FoldersCount) Func _DirListToArray($sPath) Local $i, $j, $rlist[1]=[0], $blist, $alist=_FileListToArray ($sPath, '*', 2) If IsArray ($alist) Then For $i=1 To $alist [0] _ArrayAdd ($rlist, $sPath & "\" & $alist [$i]) $blist = _DirListToArray ($sPath & "\" & $alist [$i]) If $blist[0]>0 Then For $j=1 To $blist [0] _ArrayAdd ($rlist, $blist [$j]) Next EndIf Next EndIf $rlist [0] = UBound ($rlist) - 1 Return $rlist EndFuncFor so far this works, but i keep testing Edited April 11, 2007 by Iznogoud Link to comment Share on other sites More sharing options...
randallc Posted November 8, 2007 Share Posted November 8, 2007 Hi, _FilelistToArrayNew in my sig is only a tad faster, but has other options, and still needs testers.. Best, Randall ExcelCOM... AccessCom.. Word2... FileListToArrayNew...SearchMiner... Regexps...SQL...Explorer...Array2D.. _GUIListView...array problem...APITailRW 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