Guffa | Foto | Programmering

Loopa mappar och undermappar

Här är en funktion som loopar igenom alla filer i en mapp, och även alla filer i alla undermappar.

Funktionen är rekursiv, det vill säga att den anropar sig själv. Den loopar igenom alla undermappar i mappen, och anropar sig själv för att visa innehåller i den undermappen.

Sub ShowFiles(ByRef objFS, ByRef lngFiles, ByRef lngFolders, ByRef lngSize, ByVal strPath)
   ' lokala variabler
   Dim objThisFolder, objFile, objFolder

   ' skapa ett objekt för mappen vi är i
   Set objThisFolder = objFS.GetFolder(strPath)
   ' loopa igenom alla mappar i mappen
   For each objFolder in objThisFolder.SubFolders
      ' visa allt i en undermapp
      Call ShowFiles(objFS, lngFiles, lngFolders, lngSize, strPath & "\" & objFolder.Name)
      ' räkna mappen
      lngFolders = lngFolders + 1
   Next
   ' loopa igenom alla filer i mappen
   For each objFile in objThisFolder.Files
      ' skriv ut filnamnet
      Response.Write strPath & "\" & objFile.Name & "<br>"
      ' räkna filen
      lngFiles = lngFiles + 1
      ' lägg till storleken
      lngSize = lngSize + objFile.Size
   Next
End Sub

Dim objFS, lngFiles, lngFolders, lngSize

' skapa ett FSO-objekt
Set objFS=Server.CreateObject("Scripting.FileSystemObject")
' visa alla filer under webbroten
lngFiles = 0
lngFolders = 0
lngSize = 0
Call ShowFiles(objFS, lngFiles, lngFolders, lngSize, Server.MapPath("/"))
' ta bort FSO-objektet
Set objFS = Nothing
' visa antal och storlek
Response.Write "Totalt " & lngFiles & " filer och " & lngFolders & " mappar; " & lngSize & " byte"