[已解决]如何去搜索指定的文件?
本帖最后由 pdp320921 于 2011-3-31 23:03 编辑问题如标题:
如何去搜索指定的文件?
假如我想从桌面上所有的文件夹和子文件夹里搜索1..exe的文件,该如何做?
不用DOS命令,只用AU3~~
恳请大虾赐教。 $search = FileFindFirstFile("1..exe")
; 检查搜索是否成功
If $search = -1 Then
MsgBox(0, "错误", "没有文件/目录 匹配搜索")
Exit
EndIf
While 1
$file = FileFindNextFile($search)
If @error Then ExitLoop
MsgBox(4096, "文件:", $file)
WEnd
FileClose($search) 顶楼上,要学会使用搜索功能呀,搜索文档,搜索论坛! 文档里解释的很清楚啊!如2楼述! 回复 2#
你这种方法只能搜索当前目录,而且不能遍历子目录,我想要是能够遍历子目录去搜索文件~~ 搜索嵌套,$attrib = FileGetAttrib(@TempDir&"\Temporary Internet Files\Content.IE5\" & $file)获得属性If StringInStr($attrib, "D") Then fs() ,如果是D,也就是目录的的进入进目录在继续搜索。
下面的例子是我从论坛某位大侠的脚本修改过来的,嵌套了一次,我找的文件名是“createVerifyImageServlet*.*”$search = FileFindFirstFile(@TempDir&"\Temporary Internet Files\Content.IE5\*.*")
If $search = -1 Then
Exit
EndIf
While 1
$file = FileFindNextFile($search)
If @error Then ExitLoop
$attrib = FileGetAttrib(@TempDir&"\Temporary Internet Files\Content.IE5\" & $file)
If StringInStr($attrib, "D") Then fs()
WEnd
FileClose($search)
Func fs()
$search1 = FileFindFirstFile(@TempDir&"\Temporary Internet Files\Content.IE5\" & $file & "\createVerifyImageServlet*.*")
While 1
$file1 = FileFindNextFile($search1)
If @error Then ExitLoop
FileMove(@TempDir&"\Temporary Internet Files\Content.IE5\" & $file & "\" & $file1,@TempDir & "\TxtFiles\",9)
WEnd
FileClose($search1)
EndFunc #include <File.au3>
_FindFile(@DesktopDir, '1.exe')
Func _FindFile($sPath, $sFileName = '')
$aFileList = _FileListToArray($sPath)
If Not @error Then
For $i = 1 To $aFileList
If $aFileList[$i] = $sFileName Then Return MsgBox(0, '', $sPath & '\' & $aFileList[$i])
_FindFile($sPath & '\' & $aFileList[$i])
Next
EndIf
EndFunc ;==>_FindFile 回复 #7
还是不行,只能搜索Desktop目录下的1.exe,不能遍历子目录去搜寻~~ 回复 8# pdp320921
#include <File.au3>
_FindFile(@DesktopDir, '1.exe')
Func _FindFile($sPath, $sFileName)
$aFileList = _FileListToArray($sPath)
If Not @error Then
For $i = 1 To $aFileList
If $aFileList[$i] = $sFileName Then Return MsgBox(0, '', $sPath & '\' & $aFileList[$i])
_FindFile($sPath & '\' & $aFileList[$i], $sFileName)
Next
EndIf
EndFunc ;==>_FindFile 回复 9# 水木子
感谢版主的分享。仔细看了下代码,真够经典。
但是还存在一个问题,你的代码是搜到第一个1.exe后就结束显示其路径,如果后面还有1.exe则无法显示,不能达到dos下:for /r %userprofile%\desktop in (1.exe) do @echo %a的效果 ~~ 本帖最后由 水木子 于 2011-3-10 09:14 编辑
回复 10# pdp320921
嗯!这只是为了实现你的目的而写,从严谨的角度来看肯定还存在不少问题,比如将它写成函数调用那么成功和失败的返回值肯定是少不了的。 学习了。。试试。。 简洁,经典,学习了!! 感谢分享,谢谢大大们的帮助 雷锋精神传天下!谢谢分享!
页:
[1]
2