PDA

View Full Version : Script o programma per elencare l'albero delle sottocartelle di una cartella


natasha
24-07-2006, 10:17
Buongiorno a tutti,
avrei bisogno di uno script (preferibilmente VBS, ma anche ASP o ASP.NET) o di un programma eseguibile per elencare l'albero delle sottocartelle di una cartella.
Potete aiutarmi?
Kisses,

Nat

cisky
24-07-2006, 12:30
Questo è un'esempio di .vbs che crea memorizza la struttura di una directory di partenza di un file txt (il nome è impostato nella costante 'OUTPUT_FILE_NAME').
In questo esempio il file riepilogativo viene creato nella cartella principale da cui eseguire la scansione delle sotto-directory.
Copia tutto il codice in un file .VBS


' Nome del file che contiene la struttura delle sotto-cartelle
Const OUTPUT_FILE_NAME = "SubFolderList.txt"

Dim oFso ' Scripting.FileSystemObject
Dim oTsResult ' Scripting.TextStream
Dim oMainFolder ' Scripting.Folder
Dim sStartDir
Dim bProcess
Dim sResultText

Set oFso = CreateObject("Scripting.FileSystemObject")

' Chiedo all'utente la directory di partenza
sStartDir = Trim(InputBox("Inserire la directory di partenza", "Elenco sotto directory"))

' Verifico se posso procedere
bProcess = False
If sStartDir = "" Then
MsgBox "Inserire una directory di partenza"
ElseIf Not oFso.FolderExists(sStartDir) Then
MsgBox "La directory indicata non esiste"
Else
bProcess = True
End If

If Right(sStartDir, 1) <> "\" Then sStartDir = sStartDir & "\"

' Creo il file in cui scrivere l'elenco delle sub-directory
Set oTsResult = oFso.CreateTextFile(sStartDir & OUTPUT_FILE_NAME, True)

' Ottengo la directory di partenza
Set oMainFolder = oFso.GetFolder(sStartDir)

oTsResult.WriteLine "Albero sotto cartelle:"
oTsResult.WriteLine ""

' Riempio il file con l'elenco delle informazioni
RecursiveListFolders oMainFolder, oTsResult, 1

' Chiudo il file
oTsResult.Close


Private Sub RecursiveListFolders(ByRef oCurrentFolder, oTsResult,iLevel)

Dim sLineText
Dim oFolder

' Questo è il testo da scrivere nel file
' (Tanti spazi in base al livello di nidificazione delle directory...)
'
sLineText = String(iLevel, " ") & "-> " & oCurrentFolder.Name
oTsResult.WriteLine sLineText

' Vado in ricorsione per tutte le sub-directory...
For Each oFolder In oCurrentFolder.SubFolders
RecursiveListFolders oFolder, oTsResult, iLevel + 1
Next
End Sub


Ciao

lovaz
24-07-2006, 18:42
Forse ricordo male, ma non esisteva un comando tree in dos/win?

cisky
26-07-2006, 11:58
Buona idea!
...è vero, puoi usare il comando TREE del dos (funziona anche con il Dos di Windows).