关于 递归查找当前目录及其子目录下的所有文件 和 ContinueLoop 请教大侠
;=============================;例子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这是帮助文档的代码
谁能告诉我 13-16 行是怎么回事 怎么在自定义的函数“FindAllFile”内部还能调用自己呢? 这是函数,可以重复调用自己,主程序就不建议这么做,这种写法不太好,重入次数太多的话会有问题,重入次数不多就没问题,只要会返回就行。
以前有过一个坛友,老是说内存不够,最后分析是重入太多。 嗯...所谓的递归就是自个调用自个啊. 本帖最后由 netegg 于 2011-12-20 19:51 编辑
论坛里有这个操作
那个@extended里的continueloop是干什么用的,根本执行不到这行呀
'如果文件名是一个目录,则 @extended 设置为 1' ---- 枚举到的项是个文件夹的时候枚举该文件夹中文件,也就是替换函数的参数,执行枚举 论坛里有这个操作
那个@extended里的continueloop是干什么用的,根本执行不到这行呀
'如果文件名是一个目录 ...
netegg 发表于 2011-12-20 19:45 http://www.autoitx.com/images/common/back.gif
当然能执行到continueloop行了,若不想要这行,得这样写才能使找到的文件.txt里的每一行全是文件的
;=============================
;例子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)
Else
FileWriteLine("找到的文件.txt",$sDir & "\" & $sFile)
EndIf
WEnd
; 关闭搜索句柄
FileClose($hSearch)
EndFunc
continueloop前面直接跳回函数头了,怎么执行到 回复 6# netegg
蛋兄,递归,之所以叫做“递归”,开始是“递”,后面还有“归”的过程呀
你只说到“递”了,呵。
这样,你注释掉那行和不注释,看看生成的那个txt文件内容有什么不同就知道了 FileWriteLine 很影响效率~ 直接调用命令行生成文件清单吧 回复 8# afan
那该怎么实现类似的效果呢 Local $sFiles
_FileFindAll(@ScriptDir, $sFiles)
FileWrite('list.txt', $sFiles)
Func _FileFindAll($sDir, ByRef $sOut)
Local $hSearch = FileFindFirstFile($sDir & '\*.*')
If $hSearch = -1 Then Return
While 1
Local $sFile = FileFindNextFile($hSearch)
If @error Then ExitLoop
If @extended Then ContinueLoop _FileFindAll($sDir & '\' & $sFile, $sOut)
$sOut &= $sDir & '\' & $sFile & @CRLF
WEnd
FileClose($hSearch)
EndFunc ;==>_FileFindAll 回复 7# happytc
受教了,我一直就没想明白,这个'归'字到底指的是什么,惭愧 回复 11# afan
谢谢啊 版主你真热心啊
页:
[1]