关于 文件查找的问题[已解决]
本帖最后由 jiang1234 于 2011-12-23 09:02 编辑大家好 !!我是一个AU3的小菜鸟
现在有个文件查找的问题很困扰我
我在示例上看到使用 FileFindFirstFile 函数 递归查找的例子例子如下
FileDelete("C:\1\找到的文件.txt")
FindAllFile("C:\1")
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("C:\1\找到的文件.txt",$sDir & "\" & $sFile)
WEnd
; 关闭搜索句柄
FileClose($hSearch)
EndFunc
可是我把 Local $hSearch = FileFindFirstFile($sDir & "\*.*")
改成 Local $hSearch = FileFindFirstFile($sDir & "\*Y*.*")
查找目录中所有包含 Y 字符的文件时就只能查找一层
子目录不会被查找这是为什么大家知道的帮帮我 谢谢了 这个函数本来就只查找特定目录下的文件和文件夹, 其子目录里的东西是不会被查找的
要查找子目录, 还要再次调用该函数来查找每一个子目录.
关于查找目录和文件夹, 论坛有不少例子, 请善用论坛搜索... 我善用了很多次论坛搜索了 也没有看到相关的解决办法 ,要是真想帮我 教教我怎么善用如何??? 而且 上面的示例代码 本来就是递归调用
只要是列出所有文件功能是正常的关键是指定文件名的时候 只能搜素一层 难道没人愿意帮帮我吗 ?我的天啊这个论坛怎么了啊 回复 5# jiang1234
你的子目录名不含“Y”,它干嘛查找。 我要查找指定的文件啊那要怎么做啊 大哥帮帮我吧 这个问题 我真是郁闷了几天了
比如要查找包含 Y的文件 在指定的目录中有几个 回复 7# jiang1234
根据这个改下,你那个效率太低
http://www.autoitx.com/forum.php?mod=redirect&goto=findpost&ptid=29403&pid=378226&fromuid=7644923 上面的那个代码很简洁 但是还是没有解决 怎么搜索指定的文件比如 我要找出一个文件中扩展名 为 mp3的所有文件用上面的代码是不行的 上面的那个代码很简洁 但是还是没有解决 怎么搜索指定的文件比如 我要找出一个文件中扩展名 为 mp3的所有 ...
jiang1234 发表于 2011-12-22 22:10 http://www.autoitx.com/images/common/back.gif
不是叫你改下吗?不是“用上面的代码是不行的”而是不动手是不行的。Local $sFiles
_FileListToStr('E:\Music', $sFiles)
If $sFiles <> '' Then FileWrite('list.txt', $sFiles)
Func _FileListToStr($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
_FileListToStr($sDir & '\' & $sFile, $sOut)
ContinueLoop
EndIf
If StringRight($sFile, 4) = '.mp3' Then $sOut &= $sDir & '\' & $sFile & @CRLF
WEnd
FileClose($hSearch)
EndFunc ;==>_FileListToStr 恩 我现在 这样弄了一下上面的代码得到结果后在在这个文本文件中找出所有 .MP3 结尾的文件 可是这个办法 有点太傻了 呵呵 大侠们 能不能帮小弟改进一下啊Func _FileFind()
Local $file = FileOpen("c:\1\list.txt", 0)
; 检查打开的文件是否可读
If $file = -1 Then
MsgBox(0, "错误", "不能打开文件.")
Exit
EndIf
; 每次读取一行文本,直到文件结束.
While 1
Local $line = FileReadLine($file)
If @error = -1 Then ExitLoop
Local $result = StringRight($line, 4)
If $result =".mp3" Then
;~ MsgBox(0, "读取的行:", $line)
FileWrite('c:\1\list1.txt', $line & @CRLF)
EndIf
Wend
FileClose($file)
EndFunc 谢谢 啊 版主 不要嫌我麻烦啊 我是刚开始学习 这个语言 请及时修改标题,添加“已解决”字符 本帖最后由 netegg 于 2011-12-23 00:13 编辑
回复 11# jiang1234
#include <file.au3>
#include <array.au3>
local $aA, $return = ''
_filereadtoarray($file, $aA)
local $aIndex = _Arrayfindall($aA, '.mp3', 0,0,0,1)
for $i = 0 to ubound($aIndex) - 1
$return &= $aA[$aiIndex[$i]] & @crlf
next
$resultfile = FileOpen('result.txt', 9)
filewrite($resultfile, $return)
fileclose($resultfile)
如果文件列表已经存在文件里的话 回复jiang1234
如果文件列表已经存在文件里的话
netegg 发表于 2011-12-23 00:10 http://www.autoitx.com/images/common/back.gif
他的11#是没看见我在10#的回复时发的~
页:
[1]
2