/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Undermapper - grrrrrrrr
Fra : Kasper Katzmann


Dato : 26-07-02 18:10

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( "&#160&#160&#160" )
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 & """>-&nbsp;&nbsp;" & 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") & "*"">+&nbsp;" & 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( "&#160&#160&#160" )
Next

lenFil = Len(Fil.Name)-4
Response.write( "&#160;&#160;&#160;<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



 
 
Kim Bach Petersen (26-07-2002)
Kommentar
Fra : Kim Bach Petersen


Dato : 26-07-02 23:00

Du kan vel blot tjekke om mappenavnet indeholder en underscore inden du
begynder at skrive ud, finde indhold, etc., altså en simpel if-then indføjet
i løkken, der løber mappestrukturerne igennem:

For Each Mappe in undermapper
If Instr(strMapper, "_") = 0 Then

Kim





Kasper Katzmann (27-07-2002)
Kommentar
Fra : Kasper Katzmann


Dato : 27-07-02 00:05

> For Each Mappe in undermapper
> If Instr(strMapper, "_") = 0 Then

Super!!
Jeg havde prøvet med
if inStr(strMapper,"_") then
men jeg havde lige glemt at der skulle = 0 på.

Tak for hjælpen. Det virker nu.

/Kasper K



Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408952
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste