函数参考


FileFindNextFile

搜索指定字符串并返回(下一个)与之匹配的文件名,但要求在调用过 FileFindFirstFile 函数之后.

FileFindNextFile ( 搜索句柄 )

参数

搜索句柄 搜索句柄,由 FileFindFirstFile 函数返回.

返回值

成功: 根据 FileFindFirstFile 函数的设置返回匹配的文件名.如果文件名是一个目录,则 @extended 设置为 1.
失败: 把 @error 设为 1,说明没有找到更多匹配要求的文件或文件夹.

注意/说明

必须先调用 FileFindFirstFile 函数来建立搜索并获得搜索句柄.此后每次调用 FileFindNextFile 函数都会返回下一个与 FileFindFirstFile 函数提供的搜索字符串相匹配的文件名.如果 @error = 1 则说明已不能再找到匹配文件(搜索结束).

在使用 FileFind...等函数完成搜索后务必调用 FileClose() 函数来释放搜索句柄.

相关

FileClose, FileFindFirstFile

示例/演示


;=============================
;例子1:显示当前目录中所有文件的文件名
;=============================
Local $hSearch = FileFindFirstFile("*.*")

; 检查搜索是否成功
If $hSearch = -1 Then
    MsgBox(4096, "错误", "没有文件/目录 匹配搜索")
    Exit
EndIf

While 1
    Local $sFile = FileFindNextFile($hSearch)
    If @error Then ExitLoop

    MsgBox(4096, "找到的文件:", $sFile)
WEnd

; 关闭搜索句柄
FileClose($hSearch)

;=============================
;例子2:递归查找当前目录及其子目录下的所有文件
;=============================
FindAllFile(@ScriptDir)
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