请教对指定目录里删除指定文件,但有子目录名不确定!
打个比方。我想删除C:\NEW目录下的指定文件1.txt2.txt我想要的是时刻监控这个文件生成,只要生成就删除!
NEW目录下会生成 temp0 temp1temp2......目录
但是有可能 temp0 temp1 temp2....目录里可能还有子目录,
1.txt2.txt也有可能会生成在这些子目录里,只要发现就删除!
请教有可能实现不?为节省资源,子目录深度就监控2层就好了!
我的想法是,我监控c:\new
因为temp0 temp1 不是同一时间生成的,之间有点间隔。
所以当发先TEMP0生成时便开始监控TEMP0目录下的动作。
一但发现1.TXT就删除,但是这个下面有可能有子目录,子目录名不确定,不知道如何解决!
1.txt2.txt只有一个,只要在这个目录里删除掉了便停止。
然后开始监控 TEMP1的生成,当TEMP1生成了就去监控TEMP1里的状态!
说的有点繁琐,如果能在列表里输出这些找到的1.txt2.txt的目录就最好了 !:) 本帖最后由 水木子 于 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 先谢谢木子哥
我将 Local $search = FileFindFirstFile($current & "\*.*")
改成了 Local $search = FileFindFirstFile($current & "\1.txt")
他就只搜索跟目录!
另外如果我第二个文件是123.exe 呢
又改如何解决? 我那例子是将指定目录下的所有文件全部列出来(不管多少层)
既然是全都,那就好办啦!判断搜索到的文件名就可以了,找到了就删除! 我看到效果了
但是我把文件名一改 他只搜索了第一层! 只是监控某目录的长度变化--笨办法。
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
页:
[1]