怎么将文件列表按照日期排列【已解决】
本帖最后由 q113960096 于 2011-12-22 09:24 编辑先将文件读取到数组,然后将文件列表按照日期排列,得到最近的文件名称,谢谢。 要么用命令行dir,要么是au3的FileGetTime+_FileListtoArray 回复 2# tsui
这我也想到了,就不知道具体怎么操作。 能否举个例子最好 回复 4# zxxputian1
对啊,dir 这个就不用了。au3 的可以举 改造下_FileListToArray函数,未作测试。
#Include <Array.au3>
$p=__FileListToArray("E:\UNZIPPED\IconImage" ,"*",1,1)
_ArrayDisplay($p)
Func __FileListToArray($sPath, $sFilter = "*", $iFlag = 0,$sort=1);前3个参数同_FileListToArray,$sort=1,升序;$sort=0,降序
Local $hSearch, $sFile, $sFileList, $sDelim = "|"
Local $path
$sPath = StringRegExpReplace($sPath, "[\\/]+\z", "") & "\" ; ensure single trailing backslash
If Not FileExists($sPath) Then Return SetError(1, 1, "")
If StringRegExp($sFilter, "[\\/:><\|]|(?s)\A\s*\z") 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 @error Then Return SetError(4, 4, "")
While 1
$sFile = FileFindNextFile($hSearch)
If @error Then ExitLoop
If ($iFlag + @extended = 2) Then ContinueLoop
ReDim $path
$path=$sPath&$sFile
$path=FileGetTime($path,0,1)
WEnd
FileClose($hSearch)
_ArraySort($path,0,0,0,$sort)
Local $array
For $i=0 To UBound($path)-1
$array[$i]=$path[$i]
Next
Return $array
EndFunc;==>_FileListToArray
还可以改个FTP的吧呵呵 回复 6# 3mile
我也在GOOGLE上找到了,列表文件by date ,和二级目录搜索,但把两者合起来就总是出错。请问怎么加入二级目录搜索,谢谢。 楼主这个问题貌似没问清楚吧,文件时间起码有两个,创建时间和最后修改时间 本帖最后由 netegg 于 2011-12-17 15:50 编辑
#include<array.au3>
Global $ret
$ret = _filedatesort('D:\software', 0, 1)
_ArrayDisplay($ret)
#cs
==================================================================
$current工作目录
$iflag: 指定日期类型标记,可为:
0 - 修改时间(默认)
1 - 创建时间
2 - 访问时间
$isort: 降序升序标记
0 - 升序
1 - 降序
返回值: 成功 : 根据$iflag返回结果
失败: 返回0并设置@error非0, 可为:
======================================================1================
#ce
Func _filedatesort($current, $iflag = 0, $isort = 1)
Dim $aA, $i = 0
Local $search = FileFindFirstFile($current & "\*.*")
While 1
Dim $file = FileFindNextFile($search)
If @error Then ExitLoop
If Not StringInStr(FileGetAttrib($current & "\" & $file), "D") And ($file <> "." Or $file <> "..") Then
$aA[$i] = $current & "\" & $file
$aA[$i] = FileGetTime($current & "\" & $file, $iflag, 1)
$i += 1
ReDim $aA[$i + 1]
EndIf
If StringInStr(FileGetAttrib($current & "\" & $file), "D") And ($file <> "." Or $file <> "..") Then
_filedatesort($current & "\" & $file, $iflag)
EndIf
WEnd
ReDim $aA[$i]
_ArraySort($aA, $isort, 0, 0, 1)
Return $aA
EndFunc ;==>_filedatesort
好像有点问题,参数设置有些毛病,再考虑下 回复 8# q113960096
不理解你的意思,上代码说话 回复 11# 3mile
搜索硬盘所有分区根目录文件和二级目录,找到 ghost 文件,返回最新的 ghost 文件。谢谢! 回复 10# netegg
这个的确是有些麻烦。以下是老外的代码(搜索文件并按日期排列):
#include <file.au3>
#include <array.au3>
Global $spath = @WindowsDir ;Change it to whatever you need
$checkpath = StringRegExp($spath, "^.+\\$", 0)
If $checkpath = 0 Then $spath = $spath & "\"
$aArray = _FileListToArray($spath, "*", 1)
If Not IsArray($aArray) Then
MsgBox(0, "", "Sorry but " & $spath & " has no files")
Exit
EndIf
Global $aArray2D
ReDim $aArray2D[$aArray + 1]
$aArray2D = $aArray
For $i = 1 To $aArray
$aArray2D[$i] = $aArray[$i]
$aArray2D[$i] = FileGetTime($spath & $aArray[$i], 0, 1)
Next
_ArraySort($aArray2D, 1, 1, "", 1)
_ArrayDisplay($aArray2D)
问题就是无法插入递归进行二级目录搜索。头都想痛了! 回复 9# netegg
默认修改时间,谢谢 回复 12# q113960096
http://www.autoitx.com/forum.php?mod=viewthread&tid=16645&fromuid=7639113
页:
[1]
2