回复 16# q113960096
简单修改下即可使用.
#include <file.au3>
#include <array.au3>
Global $arr, $num, $str
Global $chen=2
Global $filelist[1][2]
Global $var="chm"
$Drive = DriveGetDrive("FIXED")
For $i = 1 To $Drive[0]
_filelist($Drive[$i])
Next
_ArraySort($filelist,1,0,0,1)
_ArrayDisplay($filelist)
Func _filelist($searchdir)
$search = FileFindFirstFile($searchdir & "\*.*") ;;;;查指定目录下的文件
If $search = -1 Then Return -1 ;;;;如果找不到,返回值 -1
While 1
$file = FileFindNextFile($search) ;;;查找下一个文件
If @error Then ;;;如果找不到文件
FileClose($search) ;;;则关闭此句柄
Return ;;;返回
ElseIf $file = "." Or $file = ".." Then ;;如果找到的文件名为.或..则ContinueLoop
ContinueLoop ;;;在某些版本的AU3里面可以不需要上行和这行。
ElseIf StringInStr(FileGetAttrib($searchdir & "\" & $file), "D") Then;;如果找到的是一个文件夹,则
$arr = StringRegExp($searchdir & "\" & $file, '\\', 3)
$num = UBound($arr)
If $num < $chen Then
_filelist($searchdir & "\" & $file) ;;递归调用filelist函数,并传参数 "$searchdir & "\" & $file"
EndIf
EndIf ;;;$file为查找到的文件夹名称,上一行意思就是进入此文件夹继续查找文件.如此循环
If StringRegExp($file, '(?i)^.*?\.'&$var,0) Then ;$str &= $searchdir & "\" & $file & @CRLF;_ArrayAdd($filelist,$searchdir & "\" & $file );MsgBox( 0,0,$searchdir & "\" & $file & @crlf )
ReDim $filelist[UBound($filelist)+1][2]
$filelist[UBound($filelist)-1][0]=$searchdir & "\" & $file
$filelist[UBound($filelist)-1][1]=FileGetTime($searchdir & "\" & $file,1,1)
EndIf
WEnd
EndFunc ;==>_filelist
|