qzdisk 发表于 2008-7-1 23:45:07

怎么实现搜索!

怎么实现在全盘搜索一下个文件!
$search = FileFindFirstFile("*.*")

好像仅限于当前目录!

[ 本帖最后由 qzdisk 于 2008-7-7 19:25 编辑 ]

顽固不化 发表于 2008-7-1 23:57:47

参考一下我的递归调用:
;--------其中有子函数显示数组全部信息的,不需要显示时可以不要(第36行调用)----------
#include <Array.au3>
;-------------从“File.au3”里摘录进来的:作用是返回文件及文件夹数组--------------
Func _FileListToArray($sPath, $sFilter = "*", $iFlag = 0)
Local $hSearch, $sFile, $asFileList
If Not FileExists($sPath) Then Return SetError(1, 1, "")
If (StringInStr($sFilter, "\")) Or (StringInStr($sFilter, "/")) Or (StringInStr($sFilter, ":")) Or (StringInStr($sFilter, ">")) Or (StringInStr($sFilter, "<")) Or (StringInStr($sFilter, "|")) Or (StringStripWS($sFilter, 8) = "") Then Return SetError(2, 2, "")
If Not ($iFlag = 0 Or $iFlag = 1 Or $iFlag = 2) Then Return SetError(3, 3, "")
$hSearch = FileFindFirstFile($sPath & "\" & $sFilter)
If $hSearch = -1 Then Return SetError(4, 4, "")
While 1
$sFile = FileFindNextFile($hSearch)
If @error Then
SetError(0)
ExitLoop
EndIf
If $iFlag = 1 And StringInStr(FileGetAttrib($sPath & "\" & $sFile), "D") <> 0 Then ContinueLoop
If $iFlag = 2 And StringInStr(FileGetAttrib($sPath & "\" & $sFile), "D") = 0 Then ContinueLoop
ReDim $asFileList
$asFileList = $asFileList + 1
$asFileList = $sFile
WEnd
FileClose($hSearch)
Return $asFileList
EndFunc ;==>返回一个数组

;----------以下是假设的目标目录和要找的匹配文件类型-------------
$OldPath="e:"
$OldFileLX="*.gho"
;------------以下是必须的全局变量命名---------------------------------
Global $FileNumber=0 ;记录数组维数,全局变量
Global $FileArray ;返回的文件名主数组(全路径),全局变量
;----------------以下是用户命令----------------
FindFiles($OldPath,$OldFileLX);调用语句
$FileArray=$FileNumber;维数付给数组【0】
_ArrayDisplay($FileArray,"hhhh");调用“Array.au3”的子函数函数,显示整个数组信息

;----------------以下是由顽固不化写的递归调用函数:找所有匹配文件---------------------
;-----注意:必须和以上两个全局变量一起使用。 顽固不化 于 2008.4.22--------------------
Func FindFiles($path,$filelx) ;查找当前目录和所有子目录下的匹配文件函数
Local $filelist
Local $folders
Local $i,$j,$newpath
$filelist=_FileListToArray ($path,$filelx,1) ;调用“File.au3”的子函数,返回匹配文件数组
if not @error then
if $filelist>0 Then
for $i=1 to $filelist
$FileNumber=$FileNumber+1
ReDim $FileArray
$FileArray[$FileNumber]=$path&"\"&$filelist[$i] ;给主数组赋值
Next
EndIf
EndIf
$folders=_FileListToArray ($path,"*",2) ;调用“File.au3”的子函数,返回子目录数组
if not @error Then
if $folders>0 Then
For $j=1 to $folders
$newpath=$path&"\"&$folders[$j]
FindFiles($newpath,$filelx) ;进入子目录递归调用本身找匹配文件
Next
EndIf
EndIf
EndFunc
;-----------结束---------------------------

qzdisk 发表于 2008-7-2 05:32:24

哇!!!!!!!!!!!:face (26):
页: [1]
查看完整版本: 怎么实现搜索!