Avatar billede thomas-k Nybegynder
05. marts 2007 - 12:16 Der er 8 kommentarer og
1 løsning

Vis filer/undermapper

Jeg har brug for et script der kan:

1. Vise alle filer i en mappe
2. Vise alle undermapper

Man skal være et link til selve filerne/mapperne, så man kan downloade filerne eller navigere videre ned i undermapperne og downloade de filer man nu har brug for.

Hvorledes kan jeg lave dette?
Avatar billede thomas-k Nybegynder
05. marts 2007 - 12:18 #1
Jeg har allerede dette script:

<%
path = "overordnet mappe"
set fs=Server.CreateObject("Scripting.FileSystemObject")
Set folder = fs.GetFolder(Server.MapPath(path))
Set files = folder.files
For Each File in files
Response.Write "<li><a href=" & path & "/" & file.Name & " target=""_blank"">" & file.name & "</a></li>"
Next
set f = nothing
set fs = nothing
%>

Problemet med denne er bare at den ikke kan se undermapper...
Avatar billede morten_leth Nybegynder
05. marts 2007 - 12:22 #2
Nu kan jeg desværre ikke finde ud af ASP men jeg kan finde ud af VBscript, og det her Vbscript kan fortælle dig alle filer og underfiler i en given mappe, håber du kan bruge det til inspiration...

Option Explicit

Private mlngfileCount
Call Command1_Click

Private Sub Command1_Click()
    Dim strPath, strFind
    Dim objFSO
    Dim objFolder

    strPath = InputBox("Enter startpath:", , "C:\scripts")
   
    mlngfileCount = 0
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFolder = objFSO.GetFolder(strPath)

    Call ReplaceFileNameInFolder(objFSO, objFolder, strFind)
    MsgBox "Find and change finished!" & vbCrLf & "Changed " & mlngfileCount, vbInformation
End Sub

Sub ReplaceFileNameInFolder(objFSO, objFolder, strFind)
    Dim objDocFile
    Dim objSubFolder
    Dim objDoc
    Dim objHyperlink
    Dim blnChanged
    Dim strOldAddress
    Dim strNewAddress
    Dim StrFolder
   
    For Each objDocFile In objFolder.Files
        'If UCase(objFSO.GetExtensionName(objDocFile.Path)) = "TXT" Then
            'renames the file
            wscript.echo objDocFile.Name
            mlngfileCount = mlngFileCount + 1
        'End If
    Next
   
    For Each objSubFolder In objFolder.SubFolders
        Call ReplaceFileNameInFolder(objFSO, objSubFolder, strFind)
    Next
End Sub
Avatar billede thomas-k Nybegynder
05. marts 2007 - 12:33 #3
Ville helst have det i asp, da jeg ikke rigtig kender til VBscript.
Avatar billede morten_leth Nybegynder
05. marts 2007 - 12:45 #4
Okay, det kan jeg nok ikke klare for dig desværre...
Men jeg kan da fortælle dig at det ikke burde være så svært.. wscript.echo er det samme som response.write....

Og som du nok kan se hvis du tager alle DIM'sne væk så er koden vel mere eller mindre den samme de hedder bar lidt andet din FS hedder i den kode jeg har objFSO, og din folder hedder objFolder

Men igen jeg er nok heller ikke så stiv i det at jeg kan gøre det... men koden du skal bruge er der i hvert fald... (asp er vbscript bare stillet op på en anden måde...)
Avatar billede thomas-k Nybegynder
05. marts 2007 - 12:50 #5
Ok, det vidste jeg ikke. Jeg roder lidt rundt med det, men hvis der nu er en som læser dette og ligger inde med guldkornet, så må de meget gerne ligge en besked :-)
Avatar billede thomas-k Nybegynder
05. marts 2007 - 18:16 #6
Er der slet ingen som har et forslag til ovenstående eksempel i ASP?
Avatar billede thomas-k Nybegynder
05. marts 2007 - 19:22 #7
Nå, jeg fandt selv en løsning:

<html>
<head>
</head>
<body>
<h3>Vælg mappe:</h3>

<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" width="100%" id="AutoNumber1">
<tr>
<td align="left" width="100%">
  <%
  sti = "/filserver/"
  ShowSub = sti & request("ShowSub")
  ShowSubLink = request("ShowSub")
  strPathInfo = ShowSub
 
  strPhysicalPath = Server.MapPath(strPathInfo)

  Set objFSO = CreateObject("Scripting.FileSystemObject")
  Set objFolder = objFSO.GetFolder(strPhysicalPath)

  For each Folder in objFolder.SubFolders
    If Left(Folder.Name,1)<>"_" Then
      Response.Write "<img src='mappe.jpg' border='0' alt='Mappe'> <a href=""" & CurFile & "?ShowSub=" & ShowSubLink & ""
      Response.Write(Replace(Folder.Name, " ", "%20"))
      response.write "/"">"
      Response.Write Folder.Name
      Response.Write "<br>"
    End if
  Next

  Set objFSO = Nothing
  %>
  </td>
</tr>
</table>
<hr>

<h3>Vælg fil:</h3>

<table border="0" cellpadding="0" cellspacing="5" style="border-collapse: collapse" width="100%" id="AutoNumber1">
<%
'Response.Write ShowSub  & "<br>"
'Response.Write strPhysicalPath
'Response.End

  SiteName = request.servervariables("script_name")
  strPhysicalPath = Server.MapPath(ShowSub)

    If ShowSub > " " then
    ShowSub = Replace(ShowSub, " ", "%20")
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFolder = objFSO.GetFolder(strPhysicalPath)
    Set objFolderContents = objFolder.Files
    For Each objFileItem in objFolderContents
      Response.write "<tr><td>"
      if InStr(1,"mov", LCase(objFSO.GetExtensionName(objFileItem.name))) > 0 then

        Response.Write "<a href=""trailers/dk_show.asp?fil=" & "" & objFileItem.Name &""">" & objFileItem.Name  & "</a>"
      else
        Response.Write "<img src='fil.jpg' border='0' alt='Fil'> <a href=""" & ShowSub & "/" & objFileItem.Name &""">" & objFileItem.Name  & "</a>"
      End if   
      Response.write "</td></tr>"
    Next
    Set objFSO = Nothing
  End if
  %>
 
  </table>
</html>
Avatar billede thomas-k Nybegynder
05. marts 2007 - 19:23 #8
Der skal lige lyde en tak til Morten for forslaget ;-)
Avatar billede morten_leth Nybegynder
05. marts 2007 - 22:53 #9
sgu fair nok der.. :D jeg hjalp jo vel egentlig ikke... det klarede du sgu fint selv.. :D husk det til næste gang...
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