q113960096 发表于 2011-12-17 19:40:08

本帖最后由 q113960096 于 2011-12-17 19:41 编辑

回复 15# 3mile
这个我已经看过,我想要将搜索二层目录和安日期排列结合,找到最新的GHOST文件。谢谢!这好像很困难对我来说,因为总是出错,要么就一层搜索找到最新GHOST文件,不能二层搜索。想要二层搜索就找不到最新的GHOST文件!或许你可以试试!

3mile 发表于 2011-12-17 22:28:05

回复 16# q113960096
简单修改下即可使用.
#include <file.au3>
#include <array.au3>

Global $arr, $num, $str
Global $chen=2
Global $filelist
Global $var="chm"

$Drive = DriveGetDrive("FIXED")
For $i = 1 To $Drive
      _filelist($Drive[$i])
Next
_ArraySort($filelist,1,0,0,1)
_ArrayDisplay($filelist)

Func _filelist($searchdir)
      $search = FileFindFirstFile($searchdir & "\*.*") ;;;;查指定目录下的文件
      If $search = -1 Then Return -1 ;;;;如果找不到,返回值 -1
      While 1
                $file = FileFindNextFile($search) ;;;查找下一个文件
                If @error Then ;;;如果找不到文件
                        FileClose($search) ;;;则关闭此句柄
                        Return ;;;返回
                ElseIf $file = "." Or $file = ".." Then ;;如果找到的文件名为.或..则ContinueLoop
                        ContinueLoop ;;;在某些版本的AU3里面可以不需要上行和这行。
                ElseIf StringInStr(FileGetAttrib($searchdir & "\" & $file), "D") Then;;如果找到的是一个文件夹,则
                        $arr = StringRegExp($searchdir & "\" & $file, '\\', 3)
                        $num = UBound($arr)
                        If $num < $chen Then
                              _filelist($searchdir & "\" & $file) ;;递归调用filelist函数,并传参数"$searchdir & "\" & $file"
                        EndIf
                EndIf ;;;$file为查找到的文件夹名称,上一行意思就是进入此文件夹继续查找文件.如此循环
                If StringRegExp($file, '(?i)^.*?\.'&$var,0) Then ;$str &= $searchdir & "\" & $file & @CRLF;_ArrayAdd($filelist,$searchdir & "\" & $file );MsgBox( 0,0,$searchdir & "\" & $file & @crlf )
                                        ReDim $filelist
                                        $filelist=$searchdir & "\" & $file
                                        $filelist=FileGetTime($searchdir & "\" & $file,1,1)                                       
                                EndIf
      WEnd
EndFunc   ;==>_filelist

zxxputian1 发表于 2011-12-18 10:51:49

又有好源码,谢谢共享

q113960096 发表于 2011-12-18 18:13:50

回复 17# 3mile

非常感谢你的帮助。我怎么就没有想到呢!
我之前一直用老外的代码 $filelist 来返回数组维度大小,总是出错,基础知识不行。回头要买本书好好看看! 你的正则表达式很好,我学习了一下,你看对不对。
(?i) = 忽略大小写
^.* = 匹配字符串的开始可以为任意文本
*? = 允许前面字符串重复任意出现或不出现
\. = 查找加上一个英文句号

(?i)^.*?\. = 忽略大小写,匹配字符串的开始可以为任意文本,允许前面字符串重复任意出现或不出现,加上一个英文句号
页: 1 [2]
查看完整版本: 怎么将文件列表按照日期排列【已解决】