hot202 Posted February 24, 2010 Share Posted February 24, 2010 Hi i would like to know how would i list all .avi's that are in a folder and then list all the .avi's that are in the sub folders. Link to comment Share on other sites More sharing options...
omikron48 Posted February 24, 2010 Share Posted February 24, 2010 (edited) Try to take some time out of your very busy life and think how you can find the answers you want. Search the forums for file searching code. It's there. I'd know because I made one. Others have done it too. It's even displayed on the very first page of this section of the forum (as of time of posting). Edited February 24, 2010 by omikron48 Link to comment Share on other sites More sharing options...
99ojo Posted February 24, 2010 Share Posted February 24, 2010 Hi, expandcollapse popup#include <array.au3> ; include is only needed for _ArrayDisplay () ;Start Folder $dir = @DesktopDir $arfolder = _GetFilesFolder_Rekursiv($dir, "avi", 0) _ArrayDisplay ($arfolder) ; see above ;================================================================================================== ; Function Name: _GetFilesFolder_Rekursiv($sPath [, $sExt='*' [, $iDir=-1 [, $iRetType=0 ,[$sDelim='0']]]]) ; Description: recursive listing of files and/or folders ; Parameter(s): $sPath Basicpath of listing ('.' -current path, '..' -parent path) ; $sExt Extension for file selection '*' or -1 for all (Default) ; $iDir -1 Files+Folder(Default), 0 only Files, 1 only Folder ; optional: $iRetType 0 for Array, 1 for String as Return ; optional: $sDelim Delimiter for string return ; 0 -@CRLF (Default) 1 -@CR 2 -@LF 3 -';' 4 -'|' ; Return Value(s): Array (Default) or string with found pathes of files and/or folder ; Array[0] includes count of found files/folder ; Author(s): BugFix (bugfix@autoit.de) ;================================================================================================== Func _GetFilesFolder_Rekursiv($sPath, $sExt='*', $iDir=-1, $iRetType=0, $sDelim='0') Global $oFSO = ObjCreate('Scripting.FileSystemObject') Global $strFiles = '' Switch $sDelim Case '1' $sDelim = @CR Case '2' $sDelim = @LF Case '3' $sDelim = ';' Case '4' $sDelim = '|' Case Else $sDelim = @CRLF EndSwitch If ($iRetType < 0) Or ($iRetType > 1) Then $iRetType = 0 If $sExt = -1 Then $sExt = '*' If ($iDir < -1) Or ($iDir > 1) Then $iDir = -1 _ShowSubFolders($oFSO.GetFolder($sPath),$sExt,$iDir,$sDelim) If $iRetType = 0 Then Local $aOut $aOut = StringSplit(StringTrimRight($strFiles, StringLen($sDelim)), $sDelim, 1) If $aOut[1] = '' Then ReDim $aOut[1] $aOut[0] = 0 EndIf Return $aOut Else Return StringTrimRight($strFiles, StringLen($sDelim)) EndIf EndFunc Func _ShowSubFolders($Folder, $Ext='*', $Dir=-1, $Delim=@CRLF) If Not IsDeclared("strFiles") Then Global $strFiles = '' If ($Dir = -1) Or ($Dir = 0) Then For $file In $Folder.Files If $Ext <> '*' Then If StringRight($file.Name, StringLen($Ext)) = $Ext Then _ $strFiles &= $file.Path & $Delim Else $strFiles &= $file.Path & $Delim EndIf Next EndIf For $Subfolder In $Folder.SubFolders If ($Dir = -1) Or ($Dir = 1) Then $strFiles &= $Subfolder.Path & '\' & $Delim _ShowSubFolders($Subfolder, $Ext, $Dir, $Delim) Next EndFunc ;-)) Stefan Link to comment Share on other sites More sharing options...
dani Posted February 24, 2010 Share Posted February 24, 2010 (edited) This works, too, and is much more compact then 99ojo's code. Perhaps his has more functionality, but this does exactly what you want: #include <Array.au3> Dim $aviFiles[1] ScanDir(@ScriptDir, "avi", $aviFiles) ; Scans @ScriptDir & subdirectories for .avi files _ArrayDisplay($aviFiles) Func ScanDir($hDir, $ext, ByRef $arr) FileChangeDir($hDir) $hSearch = FileFindFirstFile("*.*") $hFile = FileFindNextFile($hSearch) While Not @error If @extended Then ; $hFile is a directory ScanDir($hDir & "\" & $hFile, $ext, $arr) ; Scan the subdirectory for .avi files Else ; $file is een file If StringRegExp($hFile, "(?i)\." & $ext & "\z") Then _ArrayAdd($arr, $hDir & "\" & $hFile) ; Add file to array EndIf $hFile = FileFindNextFile($hSearch) WEnd FileClose($hSearch) EndFunc The array is 1 based, index 0 is empty. Edited February 24, 2010 by d4ni 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