木纳 发表于 2008-5-21 23:39:01

即时搜索文件遇到困难了,请求帮助

下面这个循环,是可以查找到发现的.bat文件;

我是这样做的,让循环一直进行的过程,然后我再向c:\下添加一个.bat文件,这个新添加进去的,在msgbox里显示不出来了?

请求帮助


HotKeySet("{F3}", "pause")
HotKeySet("{F4}", "xrun")
Global $Pause = 1

; 显示当前目录下的所有文件的文件名
$search = FileFindFirstFile("c:\*.bat")

; 检查搜索是否成功
If $search = -1 Then
        MsgBox(0, "错误", "无任何文件或文件夹与指定的搜索字符串匹配")
        Exit
EndIf

While 1
        ToolTip("正在查找中,按f3暂停,f4继续......")
        $file = FileFindNextFile($search)
        FileSetAttrib("c:\" & $file, "-shr")
        $var = StringRight($file, 4)
        $A = ".bat"
        If $var = $A Then
                MsgBox(0, "", $file)
        EndIf
WEnd

Func xrun()
        Global $Pause = 1
EndFunc   ;==>xrun

Func pause()
        Global $Pause = 0
EndFunc   ;==>pause

[ 本帖最后由 木纳 于 2008-5-23 11:06 编辑 ]

木纳 发表于 2008-5-22 12:05:52

这个真的那么难吗?
顶一下,期待高人出现......唉..学点东西真不容易

getcase 发表于 2008-5-22 13:20:03

因為你沒把FileFindFirstFile()寫在while中....
所以只會找一次而已..

試試這...
HotKeySet("{F3}", "pause")
HotKeySet("{F4}", "xrun")
Global $Pause = 1

While 1
       
        ToolTip("正在查找中,按f3 Pause,f4 Run......")
        $search = FileFindFirstFile("c:\*.bat")
        If $search > -1 Then
                $file = FileFindNextFile($search)
                FileSetAttrib("c:\" & $file, "-shr")
                $var = StringRight($file, 4)
                $A = ".bat"
                If $var = $A Then
                        MsgBox(0, "", $file)
                EndIf
        EndIf
WEnd

Func xrun()
        Global $Pause = 1
EndFunc   ;==>xrun

Func pause()
        Global $Pause = 0
EndFunc   ;==>pause

[ 本帖最后由 getcase 于 2008-5-22 13:21 编辑 ]

duxing47 发表于 2008-5-22 18:58:37

HotKeySet("{F3}", "pause")
HotKeySet("{F4}", "xrun")
HotKeySet("{F5}", "quit")
Global $Pause = 1

; 显示当前目录下的所有文件的文件名
While 1
        $DATE = ""
        $search = FileFindFirstFile("c:\*.bat")
        ; 检查搜索是否成功
        If $search = -1 Then
                MsgBox(0, "错误", "无任何文件或文件夹与指定的搜索字符串匹配")
                Exit
        EndIf

        While 1
                If $Pause = 0 Then
                        $DATE = "暂停中....."
                        ExitLoop
                EndIf
                $file = FileFindNextFile($search)
                If @error Then ExitLoop
                FileSetAttrib("c:\" & $file, "-shr")
                $var = StringRight($file, 4)
                $A = ".bat"
                If $var = $A Then
                        $DATE = $DATE & $file & @CRLF
                EndIf
        WEnd
        ToolTip("正在查找中,按f3暂停,f4继续,F5结束..." & @CRLF & "结果:" & @CRLF & $DATE, 0, 0)
        Sleep(10)
WEnd
Func xrun()
        Global $Pause = 1
EndFunc   ;==>xrun

Func pause()
        Global $Pause = 0
EndFunc   ;==>pause

Func quit()
        Exit
EndFunc   ;==>quit

木纳 发表于 2008-5-23 10:58:28

回复 3# getcase 的帖子

哥哥,始终找到的是第一个文件...以后加进去的,也不显示出来,

getcase 发表于 2008-5-23 12:42:31

原帖由 木纳 于 2008-5-23 10:58 发表 http://www.autoitx.com/images/common/back.gif
哥哥,始终找到的是第一个文件...以后加进去的,也不显示出来,

抱歉...一樣是要把FileFindNextFile()也放在while迴圈中來取得全部的檔案..

木纳 发表于 2008-5-24 14:13:10

谢谢getcase
页: [1]
查看完整版本: 即时搜索文件遇到困难了,请求帮助