找回密码
 加入
搜索
查看: 1540|回复: 5

[AU3基础] 一段代码,求解,错误在哪?

  [复制链接]
发表于 2011-1-29 19:33:10 | 显示全部楼层 |阅读模式
本帖最后由 znlvhui 于 2011-1-29 19:34 编辑

;首先感谢"smartzbs",因为这段代码是他给的。另外这段代码测试过程中出现问题。

#include <File.au3>
#include <Array.au3>

$sDir = IniRead(@ScriptDir & "\config.ini", "执行路径", "路径", "");你要处理的文件夹 如 @ScriptDir
If StringRight($sDir, 1)="\" Then $sDir = StringTrimRight($sDir, 1)

$aFile = _FileListToArray($sDir)
$iFiles = 5;保留5个文件
If UBound($aFile)>$iFiles+1 Then
        Local $aReFile[UBound($aFile)-1-$iFiles][2] , $FileTime
        For $i = $iFiles+1 To UBound($aFile)-1
                ;0 = Modified (default)
                ;1 = Created
                ;2 = Accessed
                $FileTime = FileGetTime($sDir & "\" & $aFile[$i], 0);参数0修改时间,参数1创建时间,自己根据需要改
                $FileTime = _ArrayToString($FileTime, "")
                $aReFile[$i-1-$iFiles][0] = $sDir & "\" & $aFile[$i]
                $aReFile[$i-1-$iFiles][1] = $FileTime
        Next
        ;_ArraySort($aReFile, 1, 0, 0, 1);根据文件时间排序
        ;_ArrayDisplay($aReFile)
        For $i = 0 To UBound($aReFile)-1
                FileDelete($aReFile[$i][0]);要删除文件就把这句注释去掉
        Next
        
EndIf


;第一次运行可以正确,当目录下有五个文件时再新建文件后运行会错误,不能识别修改时间。
发表于 2011-1-29 19:35:40 | 显示全部楼层
注释写的很清楚了,;参数0修改时间,参数1创建时间,自己根据需要改
 楼主| 发表于 2011-1-29 19:36:23 | 显示全部楼层
修改为1也是一样的。我测试过了。不然不会提出来的。
发表于 2011-1-29 19:47:07 | 显示全部楼层
本帖最后由 smartzbs 于 2011-1-30 09:38 编辑

文件时间只取到秒,你检查文件是否时分秒也相同,前一个问题那我有编辑注释.如果时间连秒也相同的文件不删除可以这样写:
#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[UBound($aFile)-1][2] , $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][0] = $sDir & "\" & $aFile[$i]
                $aReFile[$i-1][1] = $FileTime
        Next
        _ArraySort($aReFile, 1, 0, 0, 1);根据文件时间排序
        $FileTime = $aReFile[$iFiles-1][1];处理秒相同的,即使大于5个也不删除
        For $i = $iFiles To UBound($aReFile)-1
                If $aReFile[$i][1] = $FileTime Then ContinueLoop
                ;FileDelete($aReFile[$i][0]);要删除文件就把这句注释去掉
        Next
        ;_ArrayDisplay($aReFile)
EndIf
 楼主| 发表于 2011-1-29 20:21:37 | 显示全部楼层
本帖最后由 znlvhui 于 2011-1-29 20:27 编辑

感谢smartzbs ,已经测试成功,主要想写个程序来监控万象上传的数据库文件。
还有你的代码是以分为最小单位。
发表于 2011-1-29 20:43:25 | 显示全部楼层
代码看着眼熟
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-9-21 14:35 , Processed in 0.079859 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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