Avatar billede papman Nybegynder
27. februar 2004 - 22:28 Der er 9 kommentarer og
1 løsning

Mere FSO

Hej

Jeg forsøger at læse alle mapper og filer der ligger i "test-mappen"

Dim fso,rootFolder, subFolders,files,openFolder

openFolder = request.querystring("openFolder")

Set fso = Server.CreateObject("Scripting.FileSystemObject")
    If Len(openFolder) > 0 Then
        Set rootFolder = fso.GetFolder(Server.MapPath("/" & openFolder))
    Else
        Set rootFolder = fso.GetFolder(Server.MapPath("/brian"))
'        Set rootFolder = fso.GetParentFolderName(Server.MapPath(Request.ServerVariables("PATH_INFO")))
    End If

Set subFolders = rootFolder.SubFolders
Set files = rootFolder.Files

response.write rootFolder

Det virker sådanne da - jeg kan bare ikke få lov til at gå ned og læse vidre i en under mappe ??? med openFolder suk

pls help
Avatar billede eagleeye Praktikant
27. februar 2004 - 22:50 #1
du skal havde lavet det som en rekrusis funktion sådan den kalder sig selv for hver sub-folder den finder.

Et eks:

<%
Set fso = CreateObject("Scripting.FileSystemObject")

function lookinfolder (foldernavn)
  Set objFolder = fso.getFolder( foldernavn )
  Response.Write objFolder.path & "<br>"
  Response.Flush
 
call scanFiles (objFolder.Path)
 
  For each Folder in objFolder.SubFolders
    call lookinfolder (Folder.path)
  next
 
  Set objFolder = Nothing
end function

function scanFiles (foldernavn)
  Set objFolder = fso.getFolder( foldernavn )
  Set objFiles = objFolder.Files
  for each file in objFiles
    Response.Write " : Filnavn : " & file.name & "<br>"
  next
  Set objFolder = Nothing
  Set objFiles = Nothing
end function


strPhysicalPath = Server.MapPath("/" & openFolder)

lookinfolder (strPhysicalPath)
%>
Avatar billede papman Nybegynder
27. februar 2004 - 22:58 #2
Når jeg køre den står der

Microsoft VBScript runtime error '800a0046'
Permission denied
/test/test4.asp, line 23

i bunden når den udskriver...

mit eget script så sådanne ud:
<%@ Language=VBScript %>
<% Response.Buffer = true %>
<%
'Option explicit
Function Sorter(tabel)
Dim blnContinue, I, varFirst, varSecond
    blnContinue = True
    Do Until blnContinue = False
        blnContinue = False
        For I = 0 to UBound(tabel)
            If I = UBound(tabel) Then Exit For
            If tabel(I) > tabel(I+1) Then
                varFirst = tabel(I)
                varSecond = tabel(I+1)
                tabel(I) = varSecond
                tabel(I+1) = varFirst
                blnContinue = True
            End If
        Next
    Loop
    Sorter = tabel
End Function


Dim fso,rootFolder, subFolders,files,openFolder

openFolder = request.querystring("openFolder")

Set fso = Server.CreateObject("Scripting.FileSystemObject")
ok = ""
    If Len(openFolder) > 0 Then
        Set rootFolder = fso.GetFolder(Server.MapPath("/" & openFolder))
'        Set rootFolder = fso.GetParentFolderName(Server.MapPath(Request.ServerVariables("PATH_INFO") & "\" & openFolder))
        ok = 1
    Else
        Set rootFolder = fso.GetParentFolderName(Server.MapPath(Request.ServerVariables("PATH_INFO")))
        ok = 2
    End If

Set subFolders = rootFolder.SubFolders
Set files = rootFolder.Files

response.write rootFolder & ok


Dim folder,strFolderNames,mySplit,myNames,t,strFileNames,intFolders,intFiles

For Each folder in subFolders
    strFolderNames = strFolderNames & folder.Name & ";"
    intFolders = intFolders+1
Next
    print(strFolderNames)

For Each files in files
    strFileNames = strFileNames & files.Name & ";"
    intFiles = intFiles+1
Next
    print(strFileNames)

Function print(output)
        mySplit = Split(LCase(output), ";")
        myNames = Sorter(MySplit)

        For t = 0 To UBound(MyNames)
        Response.Write(MyNames(t) & " ")
        Next
End Function

response.write("Folders: " & intFolders & " Files: " & intFiles)

Set files = Nothing
Set subFolders = Nothing
Set rootFolder = Nothing
Set fso = Nothing

%>
Avatar billede eagleeye Praktikant
27. februar 2004 - 23:14 #3
Har du rettigheder til at liste filerne i alle folderne??
Avatar billede papman Nybegynder
27. februar 2004 - 23:22 #4
Ja det har jeg...

Men ønsker ikke at kigge alle filerne igennem i alle mapperne kun den nuværende mappe(som man vælger i 'openfolder') skal vise sit indhold. Det er bare noget møj at den her ikke virker - så var det hele løst.
hvis man hardcode stien ind virker det men så kan man jo ikke vælge en anden mappe som ligger under 'test'

openFolder = request.querystring("openFolder")

Set fso = Server.CreateObject("Scripting.FileSystemObject")
    If Len(openFolder) > 0 Then
Set rootFolder = fso.GetFolder(Server.MapPath("/test/" & openFolder))
    Else
Set rootFolder = fso.GetFolder(Server.MapPath("/test"))
    End If
Avatar billede eagleeye Praktikant
27. februar 2004 - 23:27 #5
virker det ikke hvis man skriver et navn i openFolder??
xx.asp?openfolder=denne

Får du en fejl med din kode??
Avatar billede papman Nybegynder
27. februar 2004 - 23:31 #6
Så får denne dejlige fejl:

The page cannot be displayed
There is a problem with the page you are trying to reach and it cannot be displayed.
bla bla bla bla
HTTP 500 - Internal server error
Internet Explorer
Avatar billede eagleeye Praktikant
27. februar 2004 - 23:35 #7
Du skulle gerne få en bedre fejl kode/beskrivelse ved at slå denne fra i IE:

funktioner -> internetindstillinger -> avanceret -> fjern kryds i "vis meddelelse om uskadelige http-fejl"
Avatar billede papman Nybegynder
27. februar 2004 - 23:45 #8
Hold kæ** hvor kan man være dum!

Det var den der Anonymous access der var slået til på mappen. (Localhost)
Nå men så gik der da et par timer med at prøve at side at udtænke løsninger :-)

Tak for hjælpen EagleEye :-)
Læg lige et svar så du kan få nogle points som tak.
Avatar billede eagleeye Praktikant
27. februar 2004 - 23:49 #9
Ok her et svar :)
Avatar billede papman Nybegynder
27. februar 2004 - 23:51 #10
Dunker hoved ind i væggen.
Men tak igen - du var en stor hjælp :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester