Sign in to follow this  
Followers 0
blindwig

_FileListToArray2

3 posts in this topic

I was just looking at the _FileListToArray() function in the file.au3 library. It's author SolidSnake notes in the comments that it is just like "DIR /B". But what if you don't want "DIR /B"? What if you want all the details?

Here is a new function:

Func _FileListToArray2($s_Path=@MyDocumentsDir, $s_Mask='*')
    $h_Search = FileFindFirstFile($s_Path & '\' & $s_Mask)
    $s_FileName = FileFindNextFile($h_Search)
    If Not @error Then
        Dim $a_File[100][10]
        While Not @error
            $s_FullName = $s_Path & '\' & $s_FileName
            $a_File[0][0] += 1
            If $a_File[0][0] >= UBound($a_File) Then
                ReDim $aFile[$a_File[0][0] * 2][10]
            EndIf
            $i_ExtMarker = StringInStr($s_FileName,'.',0,-1)
            If $i_ExtMarker Then
                $a_File[$a_File[0][0]][0] = StringLeft($s_FileName, $i_ExtMarker - 1)
                $a_File[$a_File[0][0]][1] = StringMid($s_FileName, $i_ExtMarker + 1)
            Else
                $a_File[$a_File[0][0]][0] = $s_FileName
                $a_File[$a_File[0][0]][1] = ''
            EndIf
            $a_File[$a_File[0][0]][2] = FileGetLongName($s_FullName)
            $a_File[$a_File[0][0]][3] = FileGetAttrib($s_FullName)
            $a_File[$a_File[0][0]][4] = FileGetSize($s_FullName)
            $a_File[$a_File[0][0]][5] = FileGetTime($s_FullName,0,1)
            $a_File[$a_File[0][0]][6] = FileGetTime($s_FullName,1,1)
            $a_File[$a_File[0][0]][7] = FileGetTime($s_FullName,2,1)
            $a_File[$a_File[0][0]][8] = FileGetVersion($s_FullName)
            $a_File[$a_File[0][0]][9] = FileGetShortName($s_FullName)
            
            $s_FileName = FileFindNextFile($h_Search)
        WEnd
        ReDim $a_File[$a_File[0][0] + 1][10]
        Return $a_File
    Else
        Return ''
    EndIf
EndFunc

Which returns a 1-based 2-dimensioned array that looks like this:

[0][0] = array size

[x][0] = file name (w/o extension)

[x][1] = file extension (w/o '.')

[x][2] = long file name w/ full path

[x][3] = file attributes

[x][4] = file size

[x][5] = file modification time

[x][6] = file creation time

[x][7] = file access time

[x][8] = file version code

[x][9] = short file name w/ full short path

So to get a list of files and sort them by their modification date:

$a_FileList = _FileListToArray2();default folder is My Documents
_ArraySort($a_FileList, 1, 1, $a_FileList[0][0], 10, 5); sort decending by modification date
_ArrayBox($a_FileList);display 2-d array

And _ArrayBox() is function I wrote to help display large 2-d arrays.

Share this post


Link to post
Share on other sites



@ blindwig, nice work. I will incorporate it into one of my script and try it out.. :mellow:

Cheers.. :)

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  
Followers 0