找回密码
 加入
搜索
查看: 3213|回复: 12

[AU3基础] 文件生成监控[已解决]

  [复制链接]
发表于 2011-10-12 23:47:30 | 显示全部楼层 |阅读模式
本帖最后由 yikang8888 于 2011-10-19 14:09 编辑

各位大师,谁能帮忙指教一下,如何实现监控某个文件夹下是否有新的txt文件生成,一旦生成就将其复制到其他目录,并删除.
感谢!
发表于 2011-10-13 01:54:30 | 显示全部楼层
循环扫描目标文件夹用_FileListToArray("C:\123","*.txt", 1),如果数组数量增多了,就逐个比较文件名做出判断哪个是新增加的,然后你知道的
发表于 2011-10-13 03:17:35 | 显示全部楼层
FileFindFirstFile
发表于 2011-10-13 04:50:34 | 显示全部楼层
回复 1# yikang8888
以下代码基本能满足你的要求,但是美中不足的地方就是不能手动删除目标文件夹中的txt文件,会失灵的
#include <file.au3>
#include <array.au3>
$FileList1 = _FileListToArray("D:\autoit","*.txt", 1)
;_ArrayDisplay($Filelist1)

If $filelist1 <> 0  Then 
        While 1
                $FileList2 = _FileListToArray("D:\autoit","*.txt", 1)
                If $filelist2 <> 0 Then
                        If $Filelist2[0] <> $Filelist1[0] Then
                                For $i = 1 To $Filelist2[0]
                                        $count = 0 
                                        For $j = 1 To $Filelist1[0]
                                                If $filelist2[$i] == $filelist1[$j] Then 
                                                        ExitLoop
                                                Else 
                                                        $count += 1
                                                EndIf
                                        Next 
                                        If $count >= $filelist1[0] Then
                                                FileCopy("D:\autoit"&$filelist2[$i],"D:\123"&$filelist2[$i],9)
                                                FileDelete("D:\autoit"&$filelist2[$i])
                                        EndIf 
                                Next
                        EndIf
                EndIf
                Sleep(100)
        WEnd
Else 
        While 1
                $FileList2 = _FileListToArray("D:\autoit","*.txt", 1)
                If Not @error Then
                        For $i = 1 To $filelist2[0]
                                FileCopy("D:\autoit"&$filelist2[$i],"D:\123"&$filelist2[$i],9)
                                FileDelete("D:\autoit"&$filelist2[$i])
                        Next
                EndIf
                Sleep(100)
        WEnd
EndIf
 楼主| 发表于 2011-10-13 16:59:36 | 显示全部楼层
谢谢指导
发表于 2011-10-13 20:43:34 | 显示全部楼层
If FileExists("source path\*.txt") Then
   FileCopy("source path\*.txt","destination path")
  ;也可以用 FileMove函数
EndIf
 楼主| 发表于 2011-10-13 20:56:11 | 显示全部楼层
回复 4# xms77

你这个如果每次生成的txt是一样的名字,复制过去的时候会覆盖呀!
怎么能不覆盖呢?
发表于 2011-10-14 04:16:46 | 显示全部楼层
回复 6# amxi
对头,简单一点!
发表于 2011-10-14 04:18:34 | 显示全部楼层
回复 7# yikang8888
不覆盖的话,不保存还是更名保存啊?
发表于 2011-10-14 15:46:34 | 显示全部楼层
收藏,学了,感谢!
 楼主| 发表于 2011-10-14 17:33:26 | 显示全部楼层
回复 9# xms77

改名字也行,我自己解决了,感谢!
 楼主| 发表于 2011-10-14 17:34:33 | 显示全部楼层
回复 6# amxi

你的方法可以24小时监控吗?
发表于 2011-10-14 21:30:38 | 显示全部楼层
回复 11# yikang8888
恭喜,解决了就可以结贴了,加【已解决】,这是论坛规定的,呵呵!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-10-1 15:16 , Processed in 0.088134 second(s), 22 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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