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

[系统综合] 请教对指定目录里删除指定文件,但有子目录名不确定!

  [复制链接]
发表于 2010-5-5 08:41:09 | 显示全部楼层 |阅读模式
打个比方。我想删除C:\NEW  目录下的指定文件  1.txt  2.txt
我想要的是时刻监控这个文件生成,只要生成就删除!

NEW目录下会生成 temp0   temp1  temp2......目录

但是有可能 temp0   temp1 temp2....目录里可能还有子目录,

1.txt  2.txt也有可能会生成在这些子目录里,只要发现就删除!

请教有可能实现不?为节省资源,子目录深度就监控2层就好了!





我的想法是,我监控  c:\new   
因为temp0   temp1   不是同一时间生成的,之间有点间隔。
所以当发先TEMP0生成时便开始监控TEMP0目录下的动作。
一但发现1.TXT就删除,但是这个下面有可能有子目录,子目录名不确定,不知道如何解决!
1.txt  2.txt只有一个,只要在这个目录里删除掉了便停止。

然后开始监控 TEMP1的生成,当TEMP1生成了就去监控TEMP1里的状态!



说的有点繁琐,如果能在列表里输出这些找到的1.txt  2.txt的目录就最好了 !:)
发表于 2010-5-5 09:07:21 | 显示全部楼层
本帖最后由 水木子 于 2010-5-5 09:09 编辑
#include <GUIListView.au3>
Opt("TrayMenuMode", 1)

GUICreate("FileFindFirstFile", 400, 300)
$ListView1 = GUICtrlCreateListView('文件', 5, 5, 390, 230)
_GUICtrlListView_SetColumnWidth($ListView1, 0, 380)
$Input1 = GUICtrlCreateInput("", 5, 260, 340, 21)
$But1 = GUICtrlCreateButton("浏览", 350, 258, 40, 25)
GUISetState()

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case - 3
                        Exit
                Case $But1
                        Browse()
        EndSwitch
WEnd

Func Browse()
        $Path = FileSelectFolder("查找", "C:Windows", "可执行文件(*.ini)")
        If Not @error Then
                GUICtrlSetData($Input1, $Path)
                Read($Path)
        EndIf
EndFunc   ;==>Browse

Func read($current)
        Local $search = FileFindFirstFile($current & "\*.*")
        While 1
                Dim $file = FileFindNextFile($search)
                If @error Or StringLen($file) < 1 Then ExitLoop

                If Not StringInStr(FileGetAttrib($current & "" & $file), "D") And ($file <> "." Or $file <> "..") Then
                        _GUICtrlListView_AddItem($ListView1, $current & "" & $file)
                EndIf

                If StringInStr(FileGetAttrib($current & "" & $file), "D") And ($file <> "." Or $file <> "..") Then
                        read($current & "" & $file)
                EndIf
        WEnd
        Return
EndFunc   ;==>read
 楼主| 发表于 2010-5-5 09:29:06 | 显示全部楼层
先谢谢木子哥
我将 Local $search = FileFindFirstFile($current & "\*.*")
改成了 Local $search = FileFindFirstFile($current & "\1.txt")
他就只搜索跟目录!

另外如果我第二个文件是  123.exe 呢
又改如何解决?
发表于 2010-5-5 09:43:09 | 显示全部楼层
我那例子是将指定目录下的所有文件全部列出来(不管多少层)
既然是全都,那就好办啦!判断搜索到的文件名就可以了,找到了就删除!
 楼主| 发表于 2010-5-5 10:04:07 | 显示全部楼层
我看到效果了
但是我把文件名一改   他只搜索了第一层!
发表于 2010-5-5 10:23:09 | 显示全部楼层
只是监控某目录的长度变化--笨办法。
HotKeySet("{ESC}", "quit");定义退出热键
$size = DirGetSize("new");确定原始文件夹的大小

AdlibRegister("MyAdlib",1000)

While 1
        Sleep(1000)
WEnd

Func MyAdlib()
        $fsize=DirGetSize("new")
        If $fsize<>$size Then
                MsgBox(0,0,"文件发生改变")
                ;这里跟水木兄查找文件函数
                $size=$fsize
        EndIf
EndFunc

Func quit();退出
        AdlibUnRegister("MyAdlib")
        Exit
EndFunc
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-20 12:48 , Processed in 0.088085 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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