Avatar billede scum_lord Nybegynder
07. februar 2006 - 14:14 Der er 3 kommentarer

Mappe information

Jeg prøver lave et lille script som løber en mappe igennem, og tæller hvor mange filer/undermapper der er og skrive det til en fil. Jeg kunne godt tænke mig at hvis jeg prøver at "scanne" en mappe f.eks. c:\test, at den så returnerer en liste over alle mapper i c:\test i første niveau, og hvor mange filer/underbiblioteker der er ialt.

Så hvis jeg har en struktur der ser sådan her ud
C:\Test
      \Temp
            \SubTemp1
      \Temp2
            \SubTemp3
Så skulle programmet returnere

Temp , antal subdirs, antal filer
Temp2, antan subdirs, antal filer

Jeg har prøvet at lave det rekursivt, men kan ikke få den til at stoppe rekursionen rigtigt, så jeg får info på alle mapper, og ikke kun mapper i 1 niveau :(
Her er koden jeg har skrevet indtil videre.

Dim DirFolder, filecount
sStartPath = "h:\bruger\ace"

set oShell = CreateObject("WScript.Shell")

Set oFSO = CreateObject("Scripting.FileSystemObject")

sLog = "log.txt"

Set f = oFSo.CreateTextFile(sLog, True)


ListFolders(sStartPath)

Sub ListFolders(sPath)
Set oFolder = oFSO.GetFolder(sPath)

f.Writeline oFolder


f.Writeline "File count: " & oFolder.Files.Count
filecount = oFolder.Files.Count + filecount
DirFolder = oFolder.SubFolders.Count + DirFolder
f.writeline "Number of Directories:.." & oFolder.SubFolders.Count
f.writeline


For Each oFldr In oFolder.SubFolders
Stop
ListFolders oFldr.Path

'DirFolder = oFldr.SubFolders.Count + DirFolder

f.Writeline
Next

End Sub
f.Writeline "test: " & DirFolder
f.Writeline "test2: " & filecount
oShell.run"log.txt"
Avatar billede killerclown Nybegynder
10. februar 2006 - 08:56 #1
Værsgod..... Lidt klodset sat sammen, men det kniber med tiden :o)

Const Forappending = 8
logfil = "c:\log.txt"
strFolder = InputBox("Indtast stien, der skal listes","Check folder","C:\test")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set fi = objFSO.OpenTextFile(logfil, ForAppending, true)
Set objFolder = objFSO.GetFolder(strFolder)
Set colFiles = objFolder.Files
ShowSubFolders(objFolder)
Sub ShowSubFolders(objFolder)
  Set colFolders = objFolder.SubFolders       
    For Each objSubFolder In colFolders
            Set nyfunk = objFSO.GetFolder(objSubFolder)
                For Each folderopt In nyfunk.SubFolders
                folderantal = folderantal + 1
                Next

            Set colFiles = objSubFolder.Files
              count = 0
                For Each objFile In colFiles
                  count = count + 1
                Next
strtekst = objSubFolder.Path & " Antal filer:" & count & " Antal mapper:" & folderantal
fi.WriteLine (strtekst)                 
            ShowSubFolders(objSubFolder)
      Next
End Sub
Set fi = Nothing

/Killer
Avatar billede scum_lord Nybegynder
11. februar 2006 - 11:46 #2
Det ovenstående giver nogenlunde det samme som mit eget script, altså noget i stil med:

C:\Miranda IM\Icons Antal filer:6 Antal mapper:1
C:\Miranda IM\Icons\Original Gangsta Antal filer:1 Antal mapper:2
C:\Miranda IM\Icons\Original Gangsta\9x, ME, 2000 Antal filer:15 Antal mapper:
C:\Miranda IM\Plugins\Plugins Antal filer:4 Antal mapper:


Hvor det gerne kun skulle liste foldere 1 niveau ned. Som her
C:\Miranda IM\Icons Antal filer ialt :xx Antal mapper ialt :xx
C:\Miranda IM\Plugins Antal filer:xx Antal mapper:xx

Den skal stadigt tælle alle filer/mapper, men den skal kun liste 1 undermappe, i loggen.

Så hvis jeg har f.eks en bruger mappe på serveren, med en mappe pr bruger, så skal den gerne kunne liste brugerens "hovedmappe" og så fortælle hvor mange mapper/filer der ialt i ALLE underbiblioteker under hovedmappen
Avatar billede killerclown Nybegynder
13. februar 2006 - 11:13 #3
Aaarh .. Det kunne være jeg skulle læse hele indlægget før jeg begynder, at jappe noget af :o)

Jeg må tilbage til tegnebrædtet ;)

/Killer
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