webForumDet fria alternativet

Lista filer i mappar och undermappar

ASPur ASP

4 svar · 422 visningar · startad av airwolf

Medlem sedan okt. 2003132 inlägg
Frågan#1

Jag har ett bildalbum script
http://bilder.joda.se

Men när jag försöker läsa ut antalet bilder i mappen klarar
den inte av undermappar.

I en mapp ligger kanske inga bilder utan bara en mapp som
i sin tu innehåller bilder.

Jag vill fortfarande få ut informationen hur många bilder som ligger totalt i översta mappen och mapparna under

Del av koden:

'Count files and subfolders in folder
objCountImages = objFSO.GetFolder(objItem).Files.Count
objCountFolders = objFSO.GetFolder(objItem).SubFolders.Count

X = X + 1

'First output subfolders
%>

<td>

	<table border="0" cellspacing="0" cellpadding="0" class="text">
	<tr>
	<td width="130" height="130" align="center" valign="middle" bgcolor="#F6F6F6">
	
	<a href="default.asp?dir=<%Response.Write(dir & "/" & objItem.Name) %>"><img border="0" src="img/folder.gif"><%=oFolder%></a>
	
	</td>
	</tr>
	<tr>
	<td>
	
	<%
	'Output Folder information
	
	Response.Write "<b>" & objItem.Name & "</b><br>"
	Response.Write "Photos: " & objCountImages & "<br>"
	Response.Write "Subfolders: " & objCountFolders & "<br>"
	Response.Write "Size: "
	
        Dim stl, stl2
        
        'Output the size of the folder
        stl = objItem.Size
        If stl < 1024 then
        	Response.Write ""&Round(stl)&" bytes"
        Else
        	stl2 = stl/1024
        	If stl2 > 1024 then
        		Response.Write ""&Round(stl2/1024,2)&" mb"
        	Else
			Response.Write ""&Round(stl2,2)&" kb"
		End If
    	End If
    	%>
Medlem sedan maj 20011 312 inlägg
#2

Jag hittade den kod. Testa att köra den.
http://www.pellesoft.se/communicate/forum/view.aspx?msgid=26940

Medlem sedan dec. 20003 887 inlägg
#3

Du behöver göra en funktion till. När/om din funktion hittar en subfolder i en folder, så anropas den andra funktionen som rekursivt går igenom subfoldern. Alltså om den funktionen hittar ännu en subfolder i den folder den ska räkna, så anropar den sig själv och utför samma procedur.

Medlem sedan okt. 2003132 inlägg
#4

Om jag gör följande:

Function ShowSubFolders(Folder)
	For Each File in Folder.Files

	SubCount = SubCount + 1

	Next
		For Each Subfolder in Folder.SubFolders
		ShowSubFolders(Subfolder)
		Next

	response.write SubCount
	End Function

Så listar den alla filer men plussar inte ihop dem
De kommer på en lång rad.
Tex om undermapp1 innehåller 2 filer och undermapp2 5 filer och undermapp3 100 filer får jag ut:
25100

Hur gör jag för att summera detta?

Jag har testat med koden:

Function ShowSubFolders(Folder)
	For Each File in Folder.Files

	SubCount = SubCount + 1

	Next
		For Each Subfolder in Folder.SubFolders

			For Each File in Subfolder.Files
			SubCount = SubCount + 1
			Next

		Next

	response.write SubCount
	End Function

Men då läser den bara ur en mappstruktur neråt, ligger det filer två steg under struntar den i dessa

Medlem sedan okt. 2003132 inlägg
#5

Löste det!

Function ShowSubFolders(Folder)

	objCountImages = objCountImages + Folder.Files.Count
	
	For Each Subfolder in Folder.SubFolders
	ShowSubFolders(Subfolder)
	Next

End Function

Lyfte sedan ut Response.Write senare i koden

131 ms totalt · 3 externa anrop · v20260731065814-full.25f56b17
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)