找回密码
 加入
搜索
查看: 4099|回复: 9

[效率算法] [已解决] 关于文件夹操作.

  [复制链接]
发表于 2010-10-5 22:12:19 | 显示全部楼层 |阅读模式
本帖最后由 nxfhcsj 于 2010-10-6 22:12 编辑

最近写一个关于文件备份的小工具,将当前目录下的几个文件每隔2小时自动备份到指定目录,并以当前时间命名的文件夹下.
      遇到的问题是如何判断当前已经备份了10份,在备份第11份的时候自动删除第1份,备份第12份的时候自动删除第2份,以此类推.一直保持只备份10份的目的.请教大家能给个思路,如能有例子则更好!!!

评分

参与人数 1金钱 +10 收起 理由
afan + 10 感谢主动将修改帖子分类为[已解决],请继续 ...

查看全部评分

发表于 2010-10-5 22:14:29 | 显示全部楼层
本帖最后由 xyold1 于 2010-10-5 22:19 编辑

可以读取目标文件夹的数量
下面是帮助里的例子,改一下,判断是不是文件夹就行了
你也可以写一个配置文件,什么时间备份了,备份了多少个文件夹,都记录下来
; 显示当前目录中所有文件的文件名
$search = FileFindFirstFile("*.*")  

; 检查搜索是否成功
If $search = -1 Then
    MsgBox(0, "错误", "没有文件/目录 匹配搜索")
    Exit
EndIf

While 1
    $file = FileFindNextFile($search) 
    If @error Then ExitLoop
    
    MsgBox(4096, "文件:", $file)
WEnd

; 关闭搜索句柄
FileClose($search)
 楼主| 发表于 2010-10-5 22:17:25 | 显示全部楼层
怎么读取哦.用哪个函数呢..
 楼主| 发表于 2010-10-5 22:33:05 | 显示全部楼层
本帖最后由 nxfhcsj 于 2010-10-5 22:41 编辑

回复 2# xyold1

帮助里面这个我看过了.受帮助文档启发也写了个相关的出来.但是不尽完美.
While 1
        $search = FileFindFirstFile($netpath & @YEAR & "*.*")
        If $search = -1 Then
        Else
                While 1
                        $c1 = FileFindNextFile($search)
                        If @error Then ExitLoop
                        $c2 = @YEAR & @MON & @MDAY & @HOUR
                        $c2 = $c2 - $c1
                        ;MsgBox(4096, "文件:", $file &"数据:"& $c2)
                        If $c2 > 18 Then DirRemove($netpath & $file, 1)
                WEnd
        EndIf
        FileClose($search)
WEnd
发表于 2010-10-5 23:27:41 | 显示全部楼层
#include <File.au3>
Local $netpath = @ScriptDir & '\'
$a = _FileListToArray($netpath, @YEAR & '*.*', 2)
If Not @error And $a[0] > 9 Then
        For $i = 1 To $a[0] - 9
                DirRemove($netpath & $a[$i], 1)
        Next
EndIf
发表于 2010-10-6 00:13:54 | 显示全部楼层
利用了 _FileListToArray 返回结果按文件名排序的特点。

好技巧。
发表于 2010-10-6 00:24:13 | 显示全部楼层
[bakfilelist]
Nextfile=bakfile9
bakfile1=file1.txt
bakfile2=file2.txt
...
bakfile9=
bakfile10=file10.txt

一个通用一些的方法,建立一个类似上面内容的 ini 文件,记录 10 个当前的备份文件的文件名,以及下一个应该使用的 bakfilex 的 key nextfile,每次写进了新的 bakfilename 以后,更新 nextfile 的值。

不知道说清楚了没有?
发表于 2010-10-6 08:11:30 | 显示全部楼层
学习学习....
 楼主| 发表于 2010-10-6 22:11:37 | 显示全部楼层
回复 5# afan

谢谢A大的帮助.问题解决.另(xianhou)兄的思路不是很明白.实现起来应该也比较复杂了.
发表于 2010-10-6 23:12:40 | 显示全部楼层
问题解决了就好。

在文件名没有排序特征的情况,就需要考虑其他的方法了。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-21 03:12 , Processed in 0.089921 second(s), 28 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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