保留文件夹下最近创建时间的5个文件,其他的删除。
AU3下怎么做到保留文件夹下最近创建时间的5个文件,其他的删除。请高手给代码。 提供思路:获取文件夹创建时间来对比。。嘿嘿 本帖最后由 smartzbs 于 2011-1-30 09:36 编辑
#include <File.au3>
#include <Array.au3>
$sDir = @ScriptDir
If StringRight($sDir, 1)="\" Then $sDir = StringTrimRight($sDir, 1)
$aFile = _FileListToArray($sDir)
$iFiles = 5;保留5个文件
If UBound($aFile)>$iFiles+1 Then
Local $aReFile , $FileTime
For $i = 1 To UBound($aFile)-1
;0 = Modified (default)
;1 = Created
;2 = Accessed
$FileTime = FileGetTime($sDir & "\" & $aFile[$i], 0, 1);第1个参数:0修改时间,1创建时间,自己根据需要改,只能取到以秒为最小单位
$aReFile[$i-1] = $sDir & "\" & $aFile[$i]
$aReFile[$i-1] = $FileTime
Next
_ArraySort($aReFile, 1, 0, 0, 1);根据文件时间排序
$FileTime = $aReFile[$iFiles-1];处理秒相同的,即使大于5个也不删除
For $i = $iFiles To UBound($aReFile)-1
If $aReFile[$i] = $FileTime Then ContinueLoop
;FileDelete($aReFile[$i]);要删除文件就把这句注释去掉
Next
;_ArrayDisplay($aReFile)
EndIf 呵呵,新手没办法了。多用用别的人代码来提高自己。感谢"smartzbs"我先测试下。 本帖最后由 znlvhui 于 2011-1-29 19:11 编辑
"smartzbs"的代码测试有错误,排除有错误,我在目录新建几个文件,不能保留最近创建的5个文件。
第一次运行可以正确,当目录下有五个文件时再新建文件后运行会错误。 #include <Array.au3>
Local $count = 0, $avArray, $iKeep = 5, _;要保留(最新)的文件数
$dirpath = @ScriptDir & "\BackUp\" ;要删除文件的目录路径
; 显示当前目录中所有文件的文件名
$search = FileFindFirstFile($dirpath & "*.*")
; 检查搜索是否成功
If $search = -1 Then
MsgBox(0, "错误", "没有文件/目录 匹配搜索")
Exit
EndIf
While 1
$file = FileFindNextFile($search)
If @error Then ExitLoop
If StringInStr(FileGetAttrib($dirpath & $file), "D") > 0 Then
;ConsoleWrite(@LF &"目录: "& $file & @CR)
Else
$count += 1
ReDim $avArray[$count + 1]
$avArray = $count
$avArray[$count] = FileGetTime($dirpath & $file, 0, 1)
If @error Then $avArray[$count] = FileGetTime($dirpath & $file, 1, 1)
$avArray[$count] = $file
;ConsoleWrite(@LF &" 时间: "& $avArray[$count]&" 文件: "& $avArray[$count] & @CR)
EndIf
WEnd
; 关闭搜索句柄
FileClose($search)
_ArraySort($avArray, 1, 1, $avArray, 0) ;以时间递减排序
_ArrayDisplay($avArray, "$avArray 为二维数组")
For $i = $iKeep + 1 To $avArray ;保留最新的 5个文件
ConsoleWrite(@LF & " 要删除的文件: " & $dirpath & $avArray[$i] & @CR)
;删除文件!!!
;FileDelete($dirpath & $avArray[$i])
Next
插值做会不会快一些
页:
[1]