如何自定义函数返回一个数组
dim $i = 0$x = _filelist("c:\windows")
msgbox(0,"",$X)
Func _filelist($searchdir)
$search = FileFindFirstFile($searchdir & "\*.*")
If $search = -1 Then Return -1
While 1
$file = FileFindNextFile($search)
If @error Then
FileClose($search)
Return -1
ElseIf $file = "."Or $file = ".."Then
ContinueLoop
ElseIf StringInStr(FileGetAttrib($searchdir & "\" & $file), "D") Then
_filelist($searchdir & "\" & $file)
EndIf
If StringRight($file, 4) = ".exe"Then
$i += 1
;FileWriteLine(@ScriptDir&"\file.txt", $searchdir & "\" & $file & @CRLF)
return $searchdir & "\" & $file
EndIf
WEnd
EndFunc ;==>_filelist
return $searchdir & "\" & $file这里只能返回搜索到的第一个文件,之后的文件就无法返回,有谁能指导一下?
[ 本帖最后由 itljl 于 2008-8-11 18:36 编辑 ] 可以这样
但有限制,数组最多1600万个元素,递归最多384层
#include <array.au3>
Global $tmp
dim $i = 0
$x = _filelist("d:\aaa",$tmp)
_ArrayDisplay($tmp)
Func _filelist($searchdir,ByRef $tmp)
$search = FileFindFirstFile($searchdir & "\*.*")
If $search = -1 Then Return -1
While 1
$file = FileFindNextFile($search)
If @error Then
FileClose($search)
Return -1
ElseIf $file = "."Or $file = ".."Then
ContinueLoop
ElseIf StringInStr(FileGetAttrib($searchdir & "\" & $file), "D") Then
_filelist($searchdir & "\" & $file,$tmp)
EndIf
If StringRight($file, 4) = ".exe"Then
$i += 1
;FileWriteLine(@ScriptDir&"\file.txt", $searchdir & "\" & $file & @CRLF)
_ArrayAdd($tmp,$searchdir & "\" & $file)
$tmp+=1
EndIf
WEnd
EndFunc ;==>_filelist 谢谢,
可是,天,为什么会有这样的限制。搜索文件的目录这个递归很容易就超出384层 请改标题为已解决!,谢谢
[ 本帖最后由 pcbar 于 2008-8-11 21:03 编辑 ] 这个很有用,谢谢超版
页:
[1]