[已解决]怎么返回一个目录里所有的文件名?
本帖最后由 3370225 于 2016-2-14 17:46 编辑怎么返回一个目录里所有的文件名? 如题 看帮助文档“FileFindFirstFile ”下面的第二个例子,或者UDF函数中的_FileReadToArray函数。这样的问题,论坛里面搜一下应该能找到很多。 本帖最后由 king8462 于 2016-2-7 14:19 编辑
这是论坛中抄的循环递归代码,你自己改改。
Func Search($current)
Local $search = FileFindFirstFile($current & "\*.*")
While 1
Dim $file = FileFindNextFile($search)
If @error Or StringLen($file) < 1 Then ExitLoop
If StringInStr(FileGetAttrib($current & "\" & $file), "D") And ($file <> "." Or $file <> "..") Then
shellexecute($current & "\" & $file)
Search($current & "\" & $file)
else
filecopy($current & "\" & $file, @desktopdir& "\" & $file)
EndIf
WEnd
Return
EndFunc ;==>Search 回复 1# 3370225
$sDir = FindAllFile("d:")
Func FindAllFile($sDir)
Local $hSearch = FileFindFirstFile($sDir & "\*.*")
If $hSearch = -1 Then Return
While 1
Local $sFile = FileFindNextFile($hSearch)
If @error Then ExitLoop
If @extended Then
FindAllFile($sDir & "\" & $sFile)
ContinueLoop
EndIf
FileWriteLine("找到的文件.txt",$sDir &"\" & $sFile)
WEnd
FileClose($hSearch)
EndFunc 本帖最后由 nivisde 于 2016-2-10 20:59 编辑
#include <Array.au3>
Local $FILE_ARRAY= ;声明一维数组用来存放文件名
Local $FILE_ARRAY_INDEX=0
Local $FILE_NAME
Local $SHEARCH=FileFindFirstFile("C:\WINDOWS\system32\*.*") ; *.* 标识 查找 C:\WINDOWS\system32 下所有文件如果需要查找其他后缀,可以改改例如 *.exe
If $SHEARCH<>-1 Then
While 1
$FILE_NAME = FileFindNextFile($SHEARCH)
If @error Then ExitLoop
ReDim $FILE_ARRAY[$FILE_ARRAY_INDEX+1] ;把数组扩大下标,用于存放找到的文件名
$FILE_NAME=StringSplit($FILE_NAME,".") ;去掉文件后缀
$FILE_ARRAY[$FILE_ARRAY_INDEX]=$FILE_NAME ;装入数组
$FILE_ARRAY_INDEX+=1
WEnd
FileClose($SHEARCH)
EndIf
_ArrayDisplay($FILE_ARRAY) ;打印观察
没看明白啊。
页:
[1]