Avatar billede killstun Nybegynder
30. maj 2010 - 00:11 Der er 1 løsning

Mappe/undermappe struktur med filnavne

Jeg prøver at lave et VBScript der kan skrive en fil, som lister alle mapper, undermapper og tilhørende filer i en form for treelist.

Jeg vil gerne have output til at se således ud:

C:\Test

C:\Test\Undermappe1\
  Fil1.txt
  Fil2.txt
    C:\Test\Underappe1\Undermappe2
      Fil1.txt
      Fil2.txt
        C:\Test\Undermappe1\Undermappe2\Undermappe3
          Fil1.txt
          Fil2.txt
C:\Test\Undermappe2
  Fil1.txt
  Fil2.txt

- jeg har prøvet en del forskellige kombinationer, bl.a. nedenstående, men her kommer alle undermapper i output ud som om de ligger i roden:


ListFolderContents("c:\Test")
sub ListFolderContents(path)
    dim fs, folder, file, item, url
    set fs = CreateObject("Scripting.FileSystemObject")
    set folder = fs.GetFolder(path)

    'Display the target folder and info.

    Skriv = Skriv & ("<li><b>" & folder.Name & "</b> - " & folder.Files.Count & " files, ")
    if folder.SubFolders.Count > 0 then
      Skriv = Skriv & (folder.SubFolders.Count & " directories, ")
    end if
    Skriv = Skriv & (Round(folder.Size / 1024) & " KB total.")

    Skriv = Skriv & ("<ul>")

    'Display a list of sub folders.


    for each item in folder.SubFolders
      ListFolderContents(item.Path)
    next

    'Display a list of files.

    for each item in folder.Files
      'url = MapURL(item.path)
      Skriv = Skriv & item.Name & " - " & item.Size & " bytes, " & "last modified on " & item.DateLastModified & "." & "<br />" & vbCrLf)
    next

    Skriv = Skriv & ("</ul>" & vbCrLf)
    Skriv = Skriv & ("</li>" & vbCrLf)

Set myFSO = CreateObject("Scripting.FileSystemObject")
Set WriteStuff = myFSO.OpenTextFile("C:\test\yourtextfile.htm", 8, True)
WriteStuff.WriteLine(Skriv)
WriteStuff.Close
SET WriteStuff = NOTHING
SET myFSO = NOTHING

end sub
Avatar billede killstun Nybegynder
30. maj 2010 - 01:08 #1
Fandt fejlen:

Skriv = "<ul>"
ListFolderContents("/test")
Skriv = Skriv & "</ul>"

Skriv = Skriv & "</body>"
Skriv = Skriv & "</html>"

sub ListFolderContents(path)

    dim fs, folder, file, item, url

    set fs = CreateObject("Scripting.FileSystemObject")
    set folder = fs.GetFolder(path)

    'Display the target folder and info.

    Skriv = Skriv & ("<li><b>" & folder.Name & "</b> - " & folder.Files.Count & " files, ")
    if folder.SubFolders.Count > 0 then
      Skriv = Skriv & (folder.SubFolders.Count & " directories, ")
    end if
    Skriv = Skriv & (Round(folder.Size / 1024) & " KB total." & vbCrLf)

    Skriv = Skriv & ("<ul>" & vbCrLf)

    'Display a list of sub folders.

    for each item in folder.SubFolders
      ListFolderContents(item.Path)
    next

    'Display a list of files.

    for each item in folder.Files
      url = MapURL(item.path)
      Skriv = Skriv & ("<li><a href=""" & url & """>" & item.Name & "</a> - " & item.Size & " bytes, " & "last modified on " & item.DateLastModified & "." & "</li>" & vbCrLf)
    next

    Skriv = Skriv & ("</ul>" & vbCrLf)

    Skriv = Skriv & ("</li>" & vbCrLf)

  end sub


Set myFSO = CreateObject("Scripting.FileSystemObject")
Set WriteStuff = myFSO.OpenTextFile("C:\test\yourtextfile.htm", 8, True)
WriteStuff.WriteLine(Skriv)
WriteStuff.Close
SET WriteStuff = NOTHING
SET myFSO = NOTHING

function MapURL(path)

    dim rootPath, url

    'Convert a physical file path to a URL for hypertext links.

    rootPath = ("")
    url = Right(path, Len(path) - Len(rootPath))
    MapURL = Replace(url, "\", "/")

end function
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