本帖最后由 Qokelate 于 2012-3-18 14:10 编辑
回复 15# afan
AU3方法的话肯定是这两个的,我自己写了个UDF,但CPU占用过高,并且效率不如CMD理想,原型如下,思路是分隔已处理目录的等待处理目录,并分别用两个变量存储对应关系,推测CPU占用过高是因为句柄的频繁释放和申请, 以及过多的文本处理
func ListDIR($dirPath)
If Not FileExists($DirPath & '\') Then Return
Local $tgrPath = $DirPath
Local $hSearch, $FindFile, $DirList, $FileList, $ListCache, $FileCount, $DirCount, $Tmp
While $tgrPath
$ListCache &= $tgrPath & @CRLF
$hSearch = FileFindFirstFile($tgrPath & '\*.*')
If $hSearch <> -1 Then
While 1
$FindFile = FileFindNextFile($hSearch)
If @error Then ExitLoop
$FindFile = $tgrPath & '\' & $FindFile
If FileExists($FindFile & '\') Then
$DirList &= $FindFile & @CRLF
$DirCount += 1
Else
$FileList &= $FindFile & @CRLF
$FileCount += 1
EndIf
WEnd
FileClose($hSearch)
EndIf
$tgrPath = ''
$Tmp = StringRegExp($DirList, '.*', 1)
If $Tmp[0] Then
$tgrPath = $Tmp[0]
$DirList = StringReplace($DirList, $Tmp[0] & @LF, '')
$tgrPath = StringReplace($tgrPath, @CR, '')
EndIf
WEnd
endfunc
;$fileList=搜索到的文件
;$dirList=搜索到的目录
;$FileCount=文件计数器
;$dirList=目录计数器
|