§t¤l¥Ø¿ýªº·j´MÀÉ®×

¨Ó·½:cww, ¦Ñ©Ç

¥H¤U¬O¦Ñ©Ç¥S©Ò§@ªºNone Recursiveªº§@ªk¡C·PÁ¦ѩǴ£¨Ñªºµ{¦¡

¼ÐÃD¡G«D»¼°j¡BµL¨Ï¥Î¬É­±ªºÀÉ®×·j´M

      ¤@¯ë¨Ó»¡¡A·j´M¥Ø¿ý¤Î¤l¥Ø¿ý©³¤U²Å¦X±ø¥ó¤§©Ò¦³ÀÉ®×¥\¯àªºµ{¦¡¼¶¼g¡A¤@¦V
»á¥O¤HÀY¯k¡A¦Ó³Ì«áªº¸Ñ¨M¤è¦¡¦h¥Î Recursive(µ{¦¡»¼°j©I¥s) ¨Ó¸Ñ¨M¡A¹³ VB5.0
©Òªþªº WinSeek.vbp ½d¨Ò¡A´N¬O FileListBox ©M Recursive µ{§Çªº­Ý¥Î¡A¨Ó¸Ñ¨M
³o­Ó°ÝÃD¡C

      ¥»½d¨Ò«h¥Î¥t¤@ºØ«ä¦Ò¼Ò¦¡¤Á¤J¡A¦b¤£¨Ï¥Î¥ô¦ó OCX ¤Î Recursive µ{§Ç¤U§Q
¥Î¨â­Ó«D©T©w°}¦CÅܼƤÎÂù¼h Do...Loop °j°é¸Ñ¨M³o°ÝÃD¡C¥»½d¨Ò¥Nªíªº§t·N¬O§A
§â³o¬q Code ·h¨ìµL¨Ï¥ÎªÌ¥iµø¬É­±ªº Module ¤Î Class ùØ¡A¤@¼Ë¥i¥H°õ¦æ(µ{¦¡ùØ
ªº ListBox ¤Î MsgBox ¥u¬O¬°¤F¸Ñ»¡¤è«K¦Ó¤w¡A¹ê»Úªº¸ê®Æ¤w©ñ¤J FilePackage ³o
­Ó°ÊºA°}¦CùØ¡A¥i¥H Index ¨ú¥Î¡C)

      ·íµM§A¤£¯à®³ Windows95 ´£¨Ñªº[´M§ä]¥\¯àªº·j´M³t«×¨Ó­n¨D¥»½d¨Ò¡A¦]¬°
¨º®Ú¥»¬O¨âºØ¤£¦PªºÅX°Ê¤è¦¡¡A¦ý§Ú¥Î "c:\" ¬°·j´M±Ò©l¥Ø¿ý¡A¥H "*.*" ¬°±ø¥ó¨Ó
»P VB5.0 ªº½d¨Òµ{¦¡ WinSeek.vbp ¬Û¤ñ¡AWinSeek.vbp ¬O 2 ¤ÀÄÁ¡A§Ú¬O 2.5 ¤ÀÄÁ
¡C§ó­È±o¤@´£ªº¬O¡A¨ä¹ê¾ã­Ó·j´M°Ê§@¦b 55 ¬í®É¤w¥þ³¡§¹¦¨¡A³Ñ¤Uªº®É¶¡³£¬O¥Î¨Ó
Åã¥Ü ListBox ¸ê®Æ¡C©Ò¥H¦pªG§Aªºµ{¦¡¨Ã¤£»Ý­n¥ß§YªºÅã¥Ü¬d¸ßµ²ªG¡A¨º»ò¥»½d¨Ò
±N¤ñ WinSeek.vbp §ó¾A¦X§A¨Ï¥Î¡C

      ³Ì«á¦pªG§Aı±o¥»µ{¦¡¦³¥ô¦ó¿ù»~©Î¦³§ï¶iªº·N¨£¡A½Ð¼g«Hµ¹¯¸ªø¡A¯¸ªø·|Âà
«Hµ¹§Ú¡A¦b¦¹¥ýÁÂÁ§A¤F¡C

¦Ñ©Ç  ¤W

' Need a ListBox, CommandBox
Option Explicit

'«Å§i·j´M¨ìªºÀɮתºÀx¦s°}¦CÅܼÆ
Private FilePackage() As String

Private Sub Command1_Click()
'«Å§i¦s©ñ¥Ø¿ý¦WºÙÀx¦s°}¦CÅܼÆ
Dim DirPackage() As String
'¦s©ñÀÉ®×·j´M±ø¥ó¤§¦r¦ê
Dim SearchString As String
'±µ¦¬ Dir() ¶Ç¦^¦r¦ê¡A¨Ã°µ¬°°j°é§PÂ_ªº¦r¦ê
Dim DirString As String
'I ¥Ø«e·j´M¥Ø¿ýªº«ü¦ì¾¹¡AJ ¬O DirPackage ¥Ø¿ý°}¦C¤§¤W­­«ü¼Ð
'K ¬O FilePackage ¤§ÀÉ®×°}¦C¤§¤W­­«ü¼Ð
Dim I As Long, J As Long, K As Long

    '§â ListBox ªºÂÂÅã¥Ü¸ê®Æ²M±¼
    List1.Clear

    '§â FilePackage ªº¤W¤@¦¸·j´M¸ê®Æ²M±¼
    Erase FilePackage

    '°²³]§Ú­Ìªº·j´M±q C ºÐ®Ú¥Ø¿ý¶}©l
    ReDim DirPackage(0)
    '¸ô®|µ²§À¤@©w­n¥[ "\"
    DirPackage(0) = "c:\"

    '°²³]§Ú­Ìªº·j´M¦r¦ê¬O "*.exe"
    SearchString = "*.exe"

    'Åã¥Ü¨Fº|«ü¼Ð
    Me.MousePointer = 11

'-------- ¥H¤U·j´M C ºÐùةҦ³ªº¥Ø¿ý -----------------

    'ª½¨ì¥Ø¿ý«ü¦ì¾¹ I ¶W¹L¥Ø¿ý¤W­­«ü¼Ð J ¤~µ²§ô·j´M
    Do While I <= J

        '·j´M¥Ø¿ý«ü¦ì¾¹ I ©Ò«üªº¥Ø¿ý
        DirString = Dir(DirPackage(I), vbHidden Or vbDirectory Or vbReadOnly Or vbSystem)

        'ª½¨ì¥Ø«e¥Ø¿ý§ä¤£¨ì¥ô¦ó¥Ø¿ý©ÎÀɮפ~µ²§ô
        Do While DirString <> ""

            '¤£­n§â¤W¼h¥Ø¿ý©M²{¥Ø¿ýªº«ü¼Ð²Å¸¹ºâ¶i¥h
            If DirString <> "." And DirString <> ".." Then

                '¦pªG§ä¨ìªº¬O­Ó¥Ø¿ý
                If (GetAttr(DirPackage(I) & DirString) And vbDirectory) _
                        = vbDirectory Then
                    '§â¥Ø¿ý¤W­­¥[ 1
                    J = J + 1
                    '§âÀx¦s¥Ø¿ý¦WºÙªº°}¦C¥[¤@­Ó
                    ReDim Preserve DirPackage(J)
                    '§â¬d¨ìªº·s¥Ø¿ý©ñ¦b DirPackage ·s¤¸¯ÀùØ
                    DirPackage(J) = DirPackage(I) + DirString + "\"

                '¦pªG§ä¨ìªº¬O­ÓÀÉ®×
                Else
                    '¦pªG»P·j´M¦r¦ê¬Û²Å¦X
                    If UCase(DirString) Like UCase(SearchString) Then
                        '§âÀx¦sÀɮצWºÙªº°}¦C¥[¤@­Ó
                        ReDim Preserve FilePackage(K)
                        '§â¬d¨ìªº·sÀɮשñ¦b filePackage ·s¤¸¯ÀùØ
                        FilePackage(K) = DirPackage(I) + DirString
                        '§âÀɮפW­­¥[ 1
                        K = K + 1
                    End If
                End If

            End If

            'Ä~Äò§ä¬O§_¦³²Å¦Xªº¸ê®Æ¡A¨Ã§âµ²ªG©ñ DirString ùØ
            DirString = Dir
            DoEvents
        Loop

        '§â²{¥Ø¿ý«ü¼Ð©¹¤U²¾¤@­Ó
        I = I + 1
    Loop

'-------- ¥H¤U±Nµ²ªG¿é¥X¨ì¦C¥Ü²°ùØ  -----------------


'-------- ¥H¤U¬°§ä¨ìÀɮפ§Á`­p  -----------------


    'ÁÙ­ì·Æ¹««ü¼Ð
    Me.MousePointer = 0

    If K = 0 Then
        MsgBox "¨S¦³ " & SearchString & " ªºÀÉ®×"
    Else
        '¥H¤U±Nµ²ªG¿é¥X¨ì¦C¥Ü²°ùØ
        For I = 0 To UBound(FilePackage)
            List1.AddItem FilePackage(I)
            DoEvents
        Next

        MsgBox "Á`¦@§ä¨ì " & UBound(FilePackage) + 1 & " ­ÓÀÉ®×"

    End If

End Sub
¥H¤U¦³Recursive§@ªk¡A¥»¤H´ú¸Õµo²{Recursiveªº§@ªk²¤§Ö¤@¨Ç¡A ­ì¦]¥i¯à¥X¦bReDim Preserve DirPackage»P ReDim Preserve sDirectoryList¤W¡A «eªÌ¤@ª½°ÊºA·s¼W¥Ø¿ý¦r¦ê(¦pªGc:\¤§¤U§t¥Ø¿ý¤Uªº¤l¥Ø¿ý¤@¦@100­Ó¡A¨º³o­Ó°}¦C«K ·|¦³100ªº¤j¤p)¡A¦Ó«áªÌRecursiveªº§@ªk«h¤£¦P¡A¥¦°ÊºA¥Ø¿ýªº³Ì¤j­È«h¬O§t¦³³Ì¤j ¤l¥Ø¿ý¼Æªº¨º­Ó¥Ø¿ý¤¤¡A¤l¥Ø¿ý¤§¼Æ¥Ø(¦p¡Gc:\windows¤¤§t³Ì¦h¤l¥Ø¿ý¡A¨ä¤l¥Ø¿ý¦³30 ­Ó¡A¥B³o30­Ó¬O¤£§t¤l¥Ø¿ý¤Uªº¤l¥Ø¿ý¡A«h°ÊºA¦r¦ê°}¦Cªº³Ì¤j­Ó¼Æ«K¥u¦³30)
' Need a CommandBox
Private FoundFile() as String '¦s©ñ¶Ç¦^­Èªº¦r¦ê°}¦C
Private ntx As Long

Private Sub Command1_Click()
ntx = 0
Call GetDirPath("c:\", "*.ini")
End Sub

Private Sub GetDirPath(CurrentPath As String, ByVal SearFile As String)
    Dim nI As Integer, nDirectory As Integer, i As Long
    Dim sFileName As String, sDirectoryList() As String
    'First list all normal files in this directory
    sFileName = Dir(CurrentPath, vbHidden Or vbDirectory Or vbReadOnly Or vbSystem)
    Do While sFileName <> ""
       If UCase(sFileName) Like UCase(SearFile) Then
          i = GetAttr(CurrentPath + sFileName)
          If (i And vbDirectory) = 0 Then
              ReDim Preserve FoundFile(ntx)
              FoundFile(ntx) = CurrentPath + sFileName
              ntx = ntx + 1
          End If
       End If
       If sFileName <> "." And sFileName <> ".." Then
           'Ignore nondirectories
          If GetAttr(CurrentPath & sFileName) _
                  And vbDirectory Then

             nDirectory = nDirectory + 1
             ReDim Preserve sDirectoryList(nDirectory)
             sDirectoryList(nDirectory) = CurrentPath & sFileName
            End If
        End If
       sFileName = Dir
    Loop
    'Recursively process each directory
     For nI = 1 To nDirectory
         GetDirPath sDirectoryList(nI) & "\", SearFile
     Next nI
End Sub

¥H¤U¬O¦Ñ©Ç¥S©Ò§@ªºNone Recursiveªº§@ªk¡C·PÁ¦ѩǴ£¨Ñªºµ{¦¡

¼ÐÃD¡G«D»¼°j¡BµL¨Ï¥Î¬É­±ªºÀÉ®×·j´M

      ¤@¯ë¨Ó»¡¡A·j´M¥Ø¿ý¤Î¤l¥Ø¿ý©³¤U²Å¦X±ø¥ó¤§©Ò¦³ÀÉ®×¥\¯àªºµ{¦¡¼¶¼g¡A¤@¦V
»á¥O¤HÀY¯k¡A¦Ó³Ì«áªº¸Ñ¨M¤è¦¡¦h¥Î Recursive(µ{¦¡»¼°j©I¥s) ¨Ó¸Ñ¨M¡A¹³ VB5.0
©Òªþªº WinSeek.vbp ½d¨Ò¡A´N¬O FileListBox ©M Recursive µ{§Çªº­Ý¥Î¡A¨Ó¸Ñ¨M
³o­Ó°ÝÃD¡C

      ¥»½d¨Ò«h¥Î¥t¤@ºØ«ä¦Ò¼Ò¦¡¤Á¤J¡A¦b¤£¨Ï¥Î¥ô¦ó OCX ¤Î Recursive µ{§Ç¤U§Q
¥Î¨â­Ó«D©T©w°}¦CÅܼƤÎÂù¼h Do...Loop °j°é¸Ñ¨M³o°ÝÃD¡C¥»½d¨Ò¥Nªíªº§t·N¬O§A
§â³o¬q Code ·h¨ìµL¨Ï¥ÎªÌ¥iµø¬É­±ªº Module ¤Î Class ùØ¡A¤@¼Ë¥i¥H°õ¦æ(µ{¦¡ùØ
ªº ListBox ¤Î MsgBox ¥u¬O¬°¤F¸Ñ»¡¤è«K¦Ó¤w¡A¹ê»Úªº¸ê®Æ¤w©ñ¤J FilePackage ³o
­Ó°ÊºA°}¦CùØ¡A¥i¥H Index ¨ú¥Î¡C)

      ·íµM§A¤£¯à®³ Windows95 ´£¨Ñªº[´M§ä]¥\¯àªº·j´M³t«×¨Ó­n¨D¥»½d¨Ò¡A¦]¬°
¨º®Ú¥»¬O¨âºØ¤£¦PªºÅX°Ê¤è¦¡¡A¦ý§Ú¥Î "c:\" ¬°·j´M±Ò©l¥Ø¿ý¡A¥H "*.*" ¬°±ø¥ó¨Ó
»P VB5.0 ªº½d¨Òµ{¦¡ WinSeek.vbp ¬Û¤ñ¡AWinSeek.vbp ¬O 2 ¤ÀÄÁ¡A§Ú¬O 2.5 ¤ÀÄÁ
¡C§ó­È±o¤@´£ªº¬O¡A¨ä¹ê¾ã­Ó·j´M°Ê§@¦b 55 ¬í®É¤w¥þ³¡§¹¦¨¡A³Ñ¤Uªº®É¶¡³£¬O¥Î¨Ó
Åã¥Ü ListBox ¸ê®Æ¡C©Ò¥H¦pªG§Aªºµ{¦¡¨Ã¤£»Ý­n¥ß§YªºÅã¥Ü¬d¸ßµ²ªG¡A¨º»ò¥»½d¨Ò
±N¤ñ WinSeek.vbp §ó¾A¦X§A¨Ï¥Î¡C

      ³Ì«á¦pªG§Aı±o¥»µ{¦¡¦³¥ô¦ó¿ù»~©Î¦³§ï¶iªº·N¨£¡A½Ð¼g«Hµ¹¯¸ªø¡A¯¸ªø·|Âà
«Hµ¹§Ú¡A¦b¦¹¥ýÁÂÁ§A¤F¡C

¦Ñ©Ç  ¤W

' Need a ListBox, CommandBox
Option Explicit

'«Å§i·j´M¨ìªºÀɮתºÀx¦s°}¦CÅܼÆ
Private FilePackage() As String

Private Sub Command1_Click()
'«Å§i¦s©ñ¥Ø¿ý¦WºÙÀx¦s°}¦CÅܼÆ
Dim DirPackage() As String
'¦s©ñÀÉ®×·j´M±ø¥ó¤§¦r¦ê
Dim SearchString As String
'±µ¦¬ Dir() ¶Ç¦^¦r¦ê¡A¨Ã°µ¬°°j°é§PÂ_ªº¦r¦ê
Dim DirString As String
'I ¥Ø«e·j´M¥Ø¿ýªº«ü¦ì¾¹¡AJ ¬O DirPackage ¥Ø¿ý°}¦C¤§¤W­­«ü¼Ð
'K ¬O FilePackage ¤§ÀÉ®×°}¦C¤§¤W­­«ü¼Ð
Dim I As Long, J As Long, K As Long

    '§â ListBox ªºÂÂÅã¥Ü¸ê®Æ²M±¼
    List1.Clear

    '§â FilePackage ªº¤W¤@¦¸·j´M¸ê®Æ²M±¼
    Erase FilePackage

    '°²³]§Ú­Ìªº·j´M±q C ºÐ®Ú¥Ø¿ý¶}©l
    ReDim DirPackage(0)
    '¸ô®|µ²§À¤@©w­n¥[ "\"
    DirPackage(0) = "c:\"

    '°²³]§Ú­Ìªº·j´M¦r¦ê¬O "*.exe"
    SearchString = "*.exe"

    'Åã¥Ü¨Fº|«ü¼Ð
    Me.MousePointer = 11

'-------- ¥H¤U·j´M C ºÐùةҦ³ªº¥Ø¿ý -----------------

    'ª½¨ì¥Ø¿ý«ü¦ì¾¹ I ¶W¹L¥Ø¿ý¤W­­«ü¼Ð J ¤~µ²§ô·j´M
    Do While I <= J

        '·j´M¥Ø¿ý«ü¦ì¾¹ I ©Ò«üªº¥Ø¿ý
        DirString = Dir(DirPackage(I), vbHidden Or vbDirectory Or vbReadOnly Or vbSystem)

        'ª½¨ì¥Ø«e¥Ø¿ý§ä¤£¨ì¥ô¦ó¥Ø¿ý©ÎÀɮפ~µ²§ô
        Do While DirString <> ""

            '¤£­n§â¤W¼h¥Ø¿ý©M²{¥Ø¿ýªº«ü¼Ð²Å¸¹ºâ¶i¥h
            If DirString <> "." And DirString <> ".." Then

                '¦pªG§ä¨ìªº¬O­Ó¥Ø¿ý
                If (GetAttr(DirPackage(I) & DirString) And vbDirectory) _
                        = vbDirectory Then
                    '§â¥Ø¿ý¤W­­¥[ 1
                    J = J + 1
                    '§âÀx¦s¥Ø¿ý¦WºÙªº°}¦C¥[¤@­Ó
                    ReDim Preserve DirPackage(J)
                    '§â¬d¨ìªº·s¥Ø¿ý©ñ¦b DirPackage ·s¤¸¯ÀùØ
                    DirPackage(J) = DirPackage(I) + DirString + "\"

                '¦pªG§ä¨ìªº¬O­ÓÀÉ®×
                Else
                    '¦pªG»P·j´M¦r¦ê¬Û²Å¦X
                    If UCase(DirString) Like UCase(SearchString) Then
                        '§âÀx¦sÀɮצWºÙªº°}¦C¥[¤@­Ó
                        ReDim Preserve FilePackage(K)
                        '§â¬d¨ìªº·sÀɮשñ¦b filePackage ·s¤¸¯ÀùØ
                        FilePackage(K) = DirPackage(I) + DirString
                        '§âÀɮפW­­¥[ 1
                        K = K + 1
                    End If
                End If

            End If

            'Ä~Äò§ä¬O§_¦³²Å¦Xªº¸ê®Æ¡A¨Ã§âµ²ªG©ñ DirString ùØ
            DirString = Dir
            DoEvents
        Loop

        '§â²{¥Ø¿ý«ü¼Ð©¹¤U²¾¤@­Ó
        I = I + 1
    Loop

'-------- ¥H¤U±Nµ²ªG¿é¥X¨ì¦C¥Ü²°ùØ  -----------------


'-------- ¥H¤U¬°§ä¨ìÀɮפ§Á`­p  -----------------


    'ÁÙ­ì·Æ¹««ü¼Ð
    Me.MousePointer = 0

    If K = 0 Then
        MsgBox "¨S¦³ " & SearchString & " ªºÀÉ®×"
    Else
        '¥H¤U±Nµ²ªG¿é¥X¨ì¦C¥Ü²°ùØ
        For I = 0 To UBound(FilePackage)
            List1.AddItem FilePackage(I)
            DoEvents
        Next

        MsgBox "Á`¦@§ä¨ì " & UBound(FilePackage) + 1 & " ­ÓÀÉ®×"

    End If

End Sub