Jeg har fundet et asp-script der viser alle mapper og filer på mit site vha.
FileSystemObject.
Det fungerer også ganske fint, men det er ikke alle mapper jeg vil have
vist.
F.eks. vil jeg ikke have vist de mapper der starter med "_" (underscore).
Hvordan løser jeg det?
Scriptet kan ses her:
<%
'Vi definerer en tæller til at holde styr på niveauerne i vores rekursive
funktion.
Dim count
' Den sættes til 0 da de er dette niveau vi starter på.
count = 0
'Alle de udklappede mapper hentes fra querystring så vi kan genkende dem
senere.
Dim strMapper
strMapper = Request.Querystring( "Mapper" )
'Dette er vores rekursive funktion, en rekursiv funktion er en funktion der
kalder sig selv.
'Funktionen tager to parametre, nemlig startmappen og niveauet.
Function VisMapper( strStartmappe, niveau )
Dim objFS, Startmappe, Undermapper, Filer, Mappe, Fil, i
'Vi instansierer filesystemobjectet
Set objFS = Server.CreateObject( "Scripting.FileSystemObject" )
'Vi sætter henter et folder objekt for vores startmappe
Set Startmappe = objFS.GetFolder( strStartmappe )
'Vi henter alle undermapper til vores startmappe
Set Undermapper = Startmappe.SubFolders
'Vi henter alle filer i vores startmappe.
Set Filer = Startmappe.Files
'Vi looper igennem alle undermapperne
For Each Mappe in undermapper
'For at få det rigtige indryk looper vi og udskriver nonbreakingspaces
afhængig af vores niveau.
For i = 0 to niveau
Response.write( "   " )
Next
'Vi tjekker om mappen skal være udfoldet ved at kigge om
'*mappenavnmappedato*' er at finde i querystringen.
If Instr(strMapper, "*" & Mappe.name & Mappe.DateCreated & "*") > 0 Then
'Vi henter querystringen ind i et array så vi kan fjerne et element, da
en udklappet mappe
'Skal kunne klappes sammen ved at dens navn fjernes fra querystringen
Dim arrMapper
arrMapper = Split(strMapper, ",")
'Vi definerer en streng som skal have den querystring der er nu uden
navnet på denne mappe
'på denne måde vil mappen klappe sammen når der trykkes på linket.
Dim tempstring
tempstring = ""
'Vi løber hver post i arrayet igennem og hvis den ikke matcher den
nuværende mappe
'Bliver den tilføjet til variablen tempstring
For i = 0 to Ubound( arrMapper )
If arrMapper(i) <> "*" & Mappe.name & Mappe.DateCreated & "*" Then
tempstring = tempstring & "," &arrMapper(i)
End If
Next
'Vi sletter vores array da vi er færdige med at bruge det.
Erase arrMapper
'Vi fjerner det første komma
tempstring = Mid(tempstring, 1 )
'vi udskriver linket med et minus foran.
Response.write( "<a href=""" & Request.Servervariables( "SCRIPT_NAME" )
& "?mapper=" & tempstring & """>- " & Mappe.name & "</a><br>")
'Da mappen jo er udklappet kalder vi nu denne funktion igen med denne
mappe som startmappe. Det er dette der gør denne funktion til
'rekursiv i og med at vi kalder funktionen inde fra funktionen.
VisMapper Mappe.path, niveau + 1
'Hvis ikke mappen skal være udfoldet skrives linket ud med et plus foran
og med den nuværende querystring + *mappenavnmappedato* i linket.
Else
Response.write( "<a href=""" & Request.Servervariables( "SCRIPT_NAME" ) &
"?mapper=" & strMapper & ",*" & Mappe.name & Replace(Mappe.DateCreated, " ",
"%20") & "*"">+ " & Mappe.name & "</a><br>")
End If
Next
'Vi udskriver alle filer der ligger i mappen.
For Each Fil in Filer
'Igen sørger vi for at filernes indryk passer i strukturen.
RightFil = Right(Fil.Name,4)
if RightFil = ".asp" or RightFil = ".htm" then
For i = 0 to niveau
Response.write( "   " )
Next
lenFil = Len(Fil.Name)-4
Response.write( "   <a href="""& Fil.name & """>" &
Mid(Fil.name,1,lenFil) & "</a><br>" )
end if
Next
'Og vi rydder op.
Set objFS = Nothing
Set Startmappe = Nothing
Set Undermapper = Nothing
Set Filer = Nothing
End Function
'Her kalder vi funktionene med den mappe den skal starte på
VisMapper "c:\inetpub\wwwroot\webnavn", count
%>
Mvh
Kasper K
|