[已解决]如何得到某目录下,最近创建的目录?
本帖最后由 happytc 于 2010-12-26 00:54 编辑如有e:\abc\目录下有dir1,dir2,dir3三个子目录,如何得到那个是最近创建的?
看_Date_Time_CompareFileTime($pFileTime1, $pFileTime2)函数,把我看晕了。
关键是如何得到子目录的$pFileTime? 用函数FileGetTime()得到的时间是上面的$pFileTime吗? FileGetTime然后对比现在时间,相距较短的那个就是最近的了,为什么还要目录间对比? 本帖最后由 ahphsautoit 于 2010-12-25 23:30 编辑
#include <File.au3>
$file=_FileListToArray('e:\abc','*',2)
If not @Error The
msgbox(262144,'','最近创建的文件夹为'&$file[$file])
endif
_FileListToArray就是按照创建时间来把扫描到的目录写入数组的,所以,其扫描目录的顺序就是按照时间顺序进行的,如果扫描出的总目录数为5,则第5个目录就是最后创建的那个。 楼上的,果然简单。不过,我测试过,明显你说的“....其扫描目录的顺序就是按照时间顺序进行的”是不对的。 楼上的,果然简单。不过,我测试过,明显你说的“....其扫描目录的顺序就是按照时间顺序进行的”是不对的。
happytc 发表于 2010-12-25 23:29 http://www.autoitx.com/images/common/back.gif
你是说我那句话表述得不太正确吗?但是,结果的确是我说的那样吧?我刚刚也又测试过,没问题的啊! 比较3个文件夹,找出最新创建的?
2楼的思路应该是可行的,用FileGetTime返回文件夹的创建时间再做比较。 你是说我那句话表述得不太正确吗?但是,结果的确是我说的那样吧?我刚刚也又测试过,没问题的啊!
ahphsautoit 发表于 2010-12-25 23:31 http://autoitx.com/images/common/back.gif
我是这样测试的,得到的结果不对,先依次建目录dir1,dir2,dir3,这样你的程序得到是dir3,的确是对的,接着我删掉dir1,然后再新建dir1,结果你的程序得到的结果还是dir3,所以不对了 本帖最后由 happytc 于 2010-12-26 00:24 编辑
我是如下代码来简单解决问题的$AllDirList=_FileListToArray('e:\abc','*',2)
$CurrentTime = @YEAR & @MON & @MDAY & @HOUR & @MIN & @SEC
$TimeFlag = $CurrentTime
If $AllDirList > 1 Then
For $i = 1 To $AllDirList
$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
EndIf
MsgBox(0,"",$FileFlag)
对了,如何让上面的代码在帖子高亮呀?加个之类的? #Include <File.au3>
#Include <Array.au3>
$FileList=_FileListToArray(@DesktopDir,"*",2)
If @Error=1 Then
MsgBox (0,"","No Files\Folders Found.")
Exit
EndIf
Local $filesort
$Filesort=$FileList
For $i=1 To UBound($FileList)-1
$filesort[$i]=$FileList[$i]
$filesort[$i]=FileGetTime(@DesktopDir&"\"&$FileList[$i],1,1)
Next
_ArraySort($Filesort,1,1,0,1)
_ArrayDisplay($Filesort,"$Filesort")
3mile 发表于 2010-12-26 13:30 http://autoitx.com/images/common/back.gif
不错,不错,用排序的也相当好!
我居然前面都没有想到,进入死胡同了
页:
[1]