Jump to content

Function for file count in a directory


Recommended Posts

Is there a ready made function to count the files in directory? I have checked the help file and cannot find one listed. DirGetSize gives the total number of bytes of all the file combined.

I am reading the names in a directory into an array. I would like to allocate an array with the number of files in the directory before I traverse the list.

If this is not available, I can code it with FileFindFirstFile and loop with FileFindNextFile. Can some suggest a better solution for than this?

An alternative is to redim the array as I go. Is there a more efficient method?

Regards

Luther50

There is ways more than one way to solve a problem...

Link to comment
Share on other sites

DirGetSize() returns number of files if you set the extended flag to 1

$array = DirGetSize(@SystemDir,1)
ConsoleWrite("Directory " & @SystemDir & " contains " & $array[1] & " files" & @crlf)

Note that DirGetSize is not interruptable, for that use my UDF _DirGetSizeEx(), link in my signature.

Link to comment
Share on other sites

  • 6 years later...

Func GetFileCount($path,$ext, $Recurcive=False)
 Local $Count=0

 Local $objFSO= ObjCreate("Scripting.FileSystemObject")
;~ Count files in current folder
 For $objFSO_File in  $objFSO.GetFolder($path).Files
  if $objFSO.GetExtensionName($objFSO_File.Name) = $ext then $Count += 1
 Next
;~ Recursive all subfolders
 if $Recurcive then
  For $objFSO_SubFolder in  $objFSO.GetFolder($path).Subfolders
   $Count += GetFileCount($objFSO_SubFolder.Path,$ext,$Recurcive)
  Next
 EndIf
 Return $Count
EndFunc


Func GetSubTreeFileCount_ByWildCard($path,$WildCard="*.*",$Recurcive=False)
 Local $Count=0
;~ Count files in current folder
 $search = FileFindFirstFile($path & "\" & $WildCard)
 If $search <> -1 Then
  While 1
   $file = FileFindNextFile($search)
   If @error Then ExitLoop
   $Count+=1
  WEnd
 EndIf
 FileClose($search)
;~ Recursive all subfolders
 if $Recurcive then
  Local $objFSO= ObjCreate("Scripting.FileSystemObject")
  Local $objFSO_Folder  = $objFSO.GetFolder($path)
  Local $colFSO_SubFolders  = $objFSO.GetFolder($path).Subfolders
  For $objFSO_File in  $colFSO_SubFolders
   $Count += GetSubTreeFileCount_ByWildCard($objFSO_File.Path,$WildCard,$Recurcive)
  Next
 EndIf
 Return $Count
EndFunc

Link to comment
Share on other sites

Couple of things wrong with your post...

  1. You clearly don't know how to post code on the Forum. To post code select <> in the toolbar and paste there.
  2. You're a little late to the party, in that this is over 6 years ago. I doubt they need the answer anymore.
  3. Function already exists in the UDFs for recursively searching through a directory. Has done for two years now.
  4. I doubt you wrote that yourself, so this is blatant plagiarism. Unless you mark where you got it from.

Congratulations, not a great start to the Forum.

UDF List:

 
_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_ArrayFilter/_ArrayReduce_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_DotNet_Load()/_DotNet_Unload()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 22/04/2018

Link to comment
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
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...