Jump to content

Recommended Posts

Posted

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

Posted

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.

  • 6 years later...
Posted

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

Posted

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

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
  • Recently Browsing   0 members

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