Jump to content
Sign in to follow this  
Iznogoud

Counting folders of a specific directory

Recommended Posts

Iznogoud

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?

Share this post


Link to post
Share on other sites
Iznogoud

[offtopic]

eeej, your image is Iznogoud :shocked: 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...

Share this post


Link to post
Share on other sites
jvanegmond

[offtopic]

eeej, your image is Iznogoud :P 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.. :shocked:

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])

Share this post


Link to post
Share on other sites
Joon

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)

Share this post


Link to post
Share on other sites
Iznogoud

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 :shocked:. 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 by Iznogoud

Share this post


Link to post
Share on other sites
MrCreatoR

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_Rus_Community.png AutoIt Russian Community

My Work...

Spoiler

AutoIt_Icon_small.pngProjects: 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 Program

AutoIt_Icon_small.pngUDFs: 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
 
AutoIt_Icon_small.pngExamples: 
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 AutoIt_Rating.gif)

* === My topics === *

==================================================
My_Userbar.gif
==================================================

 

 

 

AutoIt is simple, subtle, elegant. © AutoIt Team

Share this post


Link to post
Share on other sites
jvanegmond

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..

Share this post


Link to post
Share on other sites
Iznogoud

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
EndFunc

For so far this works, but i keep testing :shocked:

Edited by Iznogoud

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.