imani Posted December 21, 2007 Posted December 21, 2007 Want the code for listing all files in a folder Could any one give me the code that gives path of all files in a folder including files in all subfolders FileFindFirstFile () FileFindNextFile () only gives files in a folder but i also want the files in subfolders
SpookMeister Posted December 21, 2007 Posted December 21, 2007 This is a recursive search that Larry made a long time ago: expandcollapse popup; _FileSearch( <Path and Mask>, <Option (0 - normal, 1- recursive)>) ; Returns array. Either Array of files (full path) where... ; Array[0] is number of files. ; Array[0] = 0 if nothing found. ; ; EXAMPLE USAGE ;-------------------------------------------- $a = _FileSearch("C:\surf\*.exe",0) If $a[0] > 0 Then For $i = 1 to $a[0] MsgBox(4096,"",$a[$i]) Next EndIf ;-------------------------------------------- Func _FileSearch($szMask,$nOption) $szRoot = "" $hFile = 0 $szBuffer = "" $szReturn = "" $szPathList = "*" Dim $aNULL[1] If Not StringInStr($szMask,"\") Then $szRoot = @SCRIPTDIR & "\" Else While StringInStr($szMask,"\") $szRoot = $szRoot & StringLeft($szMask,StringInStr($szMask,"\")) $szMask = StringTrimLeft($szMask,StringInStr($szMask,"\")) Wend EndIf If $nOption = 0 Then _FileSearchUtil($szRoot, $szMask, $szReturn) Else While 1 $hFile = FileFindFirstFile($szRoot & "*.*") If $hFile >= 0 Then $szBuffer = FileFindNextFile($hFile) While Not @ERROR If $szBuffer <> "." And $szBuffer <> ".." And _ StringInStr(FileGetAttrib($szRoot & $szBuffer),"D") Then _ $szPathList = $szPathList & $szRoot & $szBuffer & "*" $szBuffer = FileFindNextFile($hFile) Wend FileClose($hFile) EndIf _FileSearchUtil($szRoot, $szMask, $szReturn) If $szPathList == "*" Then ExitLoop $szPathList = StringTrimLeft($szPathList,1) $szRoot = StringLeft($szPathList,StringInStr($szPathList,"*")-1) & "\" $szPathList = StringTrimLeft($szPathList,StringInStr($szPathList,"*")-1) Wend EndIf If $szReturn = "" Then $aNULL[0] = 0 Return $aNULL Else Return StringSplit(StringTrimRight($szReturn,1),"*") EndIf EndFunc Func _FileSearchUtil(ByRef $ROOT, ByRef $MASK, ByRef $RETURN) $hFile = FileFindFirstFile($ROOT & $MASK) If $hFile >= 0 Then $szBuffer = FileFindNextFile($hFile) While Not @ERROR If $szBuffer <> "." And $szBuffer <> ".." Then _ $RETURN = $RETURN & $ROOT & $szBuffer & "*" $szBuffer = FileFindNextFile($hFile) Wend FileClose($hFile) EndIf EndFunc [u]Helpful tips:[/u]If you want better answers to your questions, take the time to reproduce your issue in a small "stand alone" example script whenever possible. Also, make sure you tell us 1) what you tried, 2) what you expected to happen, and 3) what happened instead.[u]Useful links:[/u]BrettF's update to LxP's "How to AutoIt" pdfValuater's Autoit 1-2-3 Download page for the latest versions of Autoit and SciTE[quote]<glyph> For example - if you came in here asking "how do I use a jackhammer" we might ask "why do you need to use a jackhammer"<glyph> If the answer to the latter question is "to knock my grandmother's head off to let out the evil spirits that gave her cancer", then maybe the problem is actually unrelated to jackhammers[/quote]
weaponx Posted December 21, 2007 Posted December 21, 2007 (edited) Ah nevermind. See here for links to various File List To Array functions:http://www.autoitscript.com/forum/index.ph...c=58558&hl= Edited December 21, 2007 by weaponx
Nahuel Posted December 21, 2007 Posted December 21, 2007 Here's one that I made, but it's very limited. It's just an example. It will search main folder and subfolders, but not the files/folders inside this last one. #include <File.au3> $MainFolderPath=@MyDocumentsDir $FoldersInMain=_FileListToArray($MainFolderPath,"*.",2) $TestFile=FileOpen("Test.txt",1) FileWriteLine($TestFile,$MainFolderPath) For $i=1 To $FoldersInMain[0] FileWriteLine($TestFile,"-->" & $FoldersInMain[$i]) $FilesInSubFolders=_FileListToArray($MainFolderPath & "\" & $FoldersInMain[$i]) For $a=1 To $FilesInSubFolders[0] FileWriteLine($TestFile,"-------->" & $FilesInSubFolders[$a]) Next Next
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