[已解决] 关于文件夹操作.
本帖最后由 nxfhcsj 于 2010-10-6 22:12 编辑最近写一个关于文件备份的小工具,将当前目录下的几个文件每隔2小时自动备份到指定目录,并以当前时间命名的文件夹下.
遇到的问题是如何判断当前已经备份了10份,在备份第11份的时候自动删除第1份,备份第12份的时候自动删除第2份,以此类推.一直保持只备份10份的目的.请教大家能给个思路,如能有例子则更好!!! 本帖最后由 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)
怎么读取哦.用哪个函数呢.. 本帖最后由 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 #include <File.au3>
Local $netpath = @ScriptDir & '\'
$a = _FileListToArray($netpath, @YEAR & '*.*', 2)
If Not @error And $a > 9 Then
For $i = 1 To $a - 9
DirRemove($netpath & $a[$i], 1)
Next
EndIf 利用了 _FileListToArray 返回结果按文件名排序的特点。
好技巧。
Nextfile=bakfile9
bakfile1=file1.txt
bakfile2=file2.txt
...
bakfile9=
bakfile10=file10.txt
一个通用一些的方法,建立一个类似上面内容的 ini 文件,记录 10 个当前的备份文件的文件名,以及下一个应该使用的 bakfilex 的 key nextfile,每次写进了新的 bakfilename 以后,更新 nextfile 的值。
不知道说清楚了没有? 学习学习.... 回复 5# afan
谢谢A大的帮助.问题解决.另(xianhou)兄的思路不是很明白.实现起来应该也比较复杂了. 问题解决了就好。
在文件名没有排序特征的情况,就需要考虑其他的方法了。
页:
[1]