一段代码,求解,错误在哪?
本帖最后由 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 , $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] = $sDir & "\" & $aFile[$i]
$aReFile[$i-1-$iFiles] = $FileTime
Next
;_ArraySort($aReFile, 1, 0, 0, 1);根据文件时间排序
;_ArrayDisplay($aReFile)
For $i = 0 To UBound($aReFile)-1
FileDelete($aReFile[$i]);要删除文件就把这句注释去掉
Next
EndIf
;第一次运行可以正确,当目录下有五个文件时再新建文件后运行会错误,不能识别修改时间。 注释写的很清楚了,;参数0修改时间,参数1创建时间,自己根据需要改 修改为1也是一样的。我测试过了。不然不会提出来的。 本帖最后由 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 , $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 本帖最后由 znlvhui 于 2011-1-29 20:27 编辑
感谢smartzbs ,已经测试成功,主要想写个程序来监控万象上传的数据库文件。
还有你的代码是以分为最小单位。 代码看着眼熟
页:
[1]