#Include <File.au3>
Local $FileNumber = 0 记录数组维数,全局变量
Local $FileArray[1] 返回的文件名主数组(全路径),全局变量
Local $result = "result.txt"
FindFiles("G:\photo", "*.jpg") 这里改为你自己要遍历的文件夹
$FileArray[0] = $FileNumber
_ArrayDisplay($FileArray, "Pictures")调用“Array.au3”的子函数函数,显示整个数组信息
For $i = 1 To $FileNumber
FileWriteLine($result, $FileArray[$i])
Next
Func FindFiles($path,$filelx)
Local $filelist
Local $folders
Local $i,$j,$newpath
$filelist = _FileListToArray ($path,$filelx,1)
if not @error then
if $filelist[0]>0 Then
for $i=1 to $filelist[0]
$FileNumber = $FileNumber + 1
ReDim $FileArray[UBound($FileArray) + 1]
$FileArray[$FileNumber] = $path &"\" &$filelist[$i]
Next
EndIf
EndIf
$folders = _FileListToArray ($path,"*",2)
if Not @error Then
If $folders[0] >0 Then
For $j=1 to $folders[0]
$newpath = $path &"\" &$folders[$j]
FindFiles($newpath,$filelx)
Next
EndIf
EndIf
EndFunc
-----------------------------------------------------------------
结果在脚本程序目录下的result.txt文件里。
我来写个autoit 脚本吧 (autoit 3.3.6.1 汉化版 winxp home sp3 环境 编译运行通过)
来个效果图
一下是源代码
$dir = "D:\h" 需要查找的路径
$str = search($dir) 调用search函数查找路径
$arr = StringSplit($str, "|") 将search函数返回的字符串拆分成数组,数组元素就是一个文件的完整路径
$file = $arr 把数组arr复制给file使file成为和arr相同大小的数组,目的只是为了构造相同大小的数组
$j = 1
循环把 数组arr中
For $i = 1 To $arr[0]
$p = StringInStr($arr[$i], "\", 0, -1) 从路径尾部向前找到路径分割符"\"在字符串中的位置
$filename = StringMid($arr[$i], $p+1) 截取文件名
如果文件名中包含字符串FRA,则将其复制到数组file中
If StringInStr($filename, "FRA", 0) Then
$file[$j] = $arr[$i]
$j += 1
EndIf
Next
$n = $j - 1 循环结束后j-1的值就是含FRA的文件的个数
buf字符串的内容将会用来写入文件
$buf = "总共找到文件个数:" & $n & " 个" &@CRLF
循环将数组file中的路径拼接到buf上
For $j = 1 To $n
$buf &= $file[$j] & @CRLF
Next
在脚本所在目录创建统计报告.txt
$fp = FileOpen(@ScriptDir & "\统计报告.txt", 10)
FileWrite($fp, $buf) 把buf的内容写入统计报告.txt
FileClose($fp) 关闭fileopen函数打开的文件
Run(@WindowsDir & "\Notepad.exe " & @ScriptDir & "\统计报告.txt", "")用启动记事本打开生成的文件
递归查找函数,递归查找*.*,支持子目录,以字符串形式返回所有文件的路径
各路径之间用 竖线“|”隔开
Func search($path)
$ret = ""
$handle = FileFindFirstFile($path & "\*.*")
If $handle = -1 Then Return $ret
While 1
$file = FileFindNextFile($handle)
If @error Then ExitLoop
If @extended Then
$tmp = search($path & "\" & $file)
Else
$tmp = $path & "\" & $file
EndIf
If $tmp <> "" Then
If $ret = "" Then
$ret = $tmp
Else
$ret = $ret & "|" & $tmp
EndIf
EndIf
WEnd
Return $ret
EndFunc
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)