找回密码
 加入
搜索
查看: 2512|回复: 10

[AU3基础] [已解决]如何得到某目录下,最近创建的目录?

  [复制链接]
发表于 2010-12-24 20:17:34 | 显示全部楼层 |阅读模式
本帖最后由 happytc 于 2010-12-26 00:54 编辑

如有e:\abc\目录下有dir1,dir2,dir3三个子目录,如何得到那个是最近创建的?
看_Date_Time_CompareFileTime($pFileTime1, $pFileTime2)函数,把我看晕了。

关键是如何得到子目录的$pFileTime?
 楼主| 发表于 2010-12-24 20:21:18 | 显示全部楼层
用函数FileGetTime()得到的时间是上面的$pFileTime吗?
发表于 2010-12-25 01:04:47 | 显示全部楼层
FileGetTime然后对比现在时间,相距较短的那个就是最近的了,为什么还要目录间对比?
发表于 2010-12-25 23:17:02 | 显示全部楼层
本帖最后由 ahphsautoit 于 2010-12-25 23:30 编辑

#include <File.au3>
$file=_FileListToArray('e:\abc','*',2)
If not @Error The
    msgbox(262144,'','最近创建的文件夹为'&$file[$file[0]])
endif
_FileListToArray就是按照创建时间来把扫描到的目录写入数组的,所以,其扫描目录的顺序就是按照时间顺序进行的,如果扫描出的总目录数为5,则第5个目录就是最后创建的那个。
 楼主| 发表于 2010-12-25 23:29:42 | 显示全部楼层
楼上的,果然简单。不过,我测试过,明显你说的“....其扫描目录的顺序就是按照时间顺序进行的”是不对的。
发表于 2010-12-25 23:31:59 | 显示全部楼层
楼上的,果然简单。不过,我测试过,明显你说的“....其扫描目录的顺序就是按照时间顺序进行的”是不对的。
happytc 发表于 2010-12-25 23:29


你是说我那句话表述得不太正确吗?但是,结果的确是我说的那样吧?我刚刚也又测试过,没问题的啊!
发表于 2010-12-25 23:38:09 | 显示全部楼层
比较3个文件夹,找出最新创建的?

2楼的思路应该是可行的,用FileGetTime返回文件夹的创建时间再做比较。
 楼主| 发表于 2010-12-26 00:14:24 | 显示全部楼层
你是说我那句话表述得不太正确吗?但是,结果的确是我说的那样吧?我刚刚也又测试过,没问题的啊!
ahphsautoit 发表于 2010-12-25 23:31


我是这样测试的,得到的结果不对,先依次建目录dir1,dir2,dir3,这样你的程序得到是dir3,的确是对的,接着我删掉dir1,然后再新建dir1,结果你的程序得到的结果还是dir3,所以不对了
 楼主| 发表于 2010-12-26 00:21:42 | 显示全部楼层
本帖最后由 happytc 于 2010-12-26 00:24 编辑

我是如下代码来简单解决问题的
$AllDirList=_FileListToArray('e:\abc','*',2)
$CurrentTime = @YEAR & @MON & @MDAY & @HOUR & @MIN & @SEC

$TimeFlag = $CurrentTime
If $AllDirList[0] > 1 Then
        For $i = 1 To $AllDirList[0]
                $FileTime = FileGetTime("e:\abc" & $AllDirList[$i], 1, 1)
                $TimeDiff = $CurrentTime - $FileTime
                If $TimeDiff < $TimeFlag Then
                        $TimeFlag = $TimeDiff
                        $FileFlag = $AllDirList[$i]
                EndIf
        Next
Else
        $FileFlag = $AllDirList[1]
EndIf

MsgBox(0,"",$FileFlag)
对了,如何让上面的代码在帖子高亮呀?加个[high]之类的?
发表于 2010-12-26 13:30:33 | 显示全部楼层
#Include <File.au3>
#Include <Array.au3>

$FileList=_FileListToArray(@DesktopDir,"*",2)
If @Error=1 Then
        MsgBox (0,"","No Files\Folders Found.")
        Exit
EndIf

Local $filesort[UBound($FileList)][2]
$Filesort[0][0]=$FileList[0]
For $i=1 To UBound($FileList)-1
        $filesort[$i][0]=$FileList[$i]
        $filesort[$i][1]=FileGetTime(@DesktopDir&"\"&$FileList[$i],1,1)
Next
_ArraySort($Filesort,1,1,0,1)
_ArrayDisplay($Filesort,"$Filesort")
 楼主| 发表于 2010-12-28 00:40:34 | 显示全部楼层
3mile 发表于 2010-12-26 13:30

不错,不错,用排序的也相当好!
我居然前面都没有想到,进入死胡同了
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-10-2 18:33 , Processed in 0.080506 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表