Salve, devo leggere le sottocartelle di una cartella in modo ricorsivo, ossia tutte le sottocartelle. Qualcuno sa darmi indicazioni? Grazie in anticipo
Salve, devo leggere le sottocartelle di una cartella in modo ricorsivo, ossia tutte le sottocartelle. Qualcuno sa darmi indicazioni? Grazie in anticipo
ok. Grazie, ho visto il tutorial. però non mi sembra sia ricorsivo.
cosa vuoi ottenere, esattamente?
se vuoi ottenere direttamente l'albero di tutte le cartelle "non devi fare altro" che fare un controllo su quello che hai trovato nella cartella.
lo script è d'esempio e di base, devi adattarlo.
Ultima modifica di Vincent.Zeno; 21-03-2016 a 21:49
esattamente questo. voglio ottenere l'albero di tutte le cartelle. ho estratto il ciclo che mi legge le cartelle diciamo del primo livello. però poi la fase in cui dovrebbe andare automaticamente alle sottocartelle e così in modo ricorsivo non é chiara. l'esempio creadei link che lanciati leggono, livello per livello, le sottocartelle. l'ho estratto e, sinceramente, é esattamente quello che ho sempre fatto da me. lo riporto (ho chiaramente impostato la mia cartella di partenza, ossia foto che si trova nella root:
Dim cartella, sotto
cartella = Request.QueryString("cartella")
sotto = Request.QueryString("sotto")
Dim fso, percorso
Set fso = Server.CreateObject("Scripting.FileSystemObject")
percorso = "../foto/"'
Function genera()
If sotto = "" Then
Response.Write File.Name & "<br>"
Else
Response.Write sotto & "/" & File.Name & "<br>"
End If
End Function
For Each File in fso.GetFolder(Server.MapPath(percorso)).SubFolders
%>
<a href="ricorsiva.asp?cartella=<%=cartella%>&sotto=< %Call genera()%>"><%=File.Name%></a><br>
<%
Next
Set fso = Nothing
allora, io vorrei che automaticamente me li leggesse tutti, quindi cosa potrei fare?
non mi é chiara la funzione creata e richiamata, anche perché non va, ho provato
Ultima modifica di marco.agelao; 21-03-2016 a 22:26
Ciao
Ho avuto un problema analogo al tuo tempo fa e l'ho risolto utilizzando comandi DOS da ASP tramite l'oggetto wshShell ed esecuzione sulla pagina web.
in pratica ho creato il file listadir.txt con dentro tutte le sottocartelle presenti ognuna in un record del file txt.
Poi successivamente ho apertoil file tramite FSO per leggere una cartella per volta.
il comando DOS è il vecchio "DIR *.* /S/B /A: D" che elenca tutti i file del disco marchiati come Directory il tutto redirezionato dal PIPE ">" verso il file "listadir.txt"
l'unica cosa che ho fatto è attivare nella cartella del mio web, la cartella CGI e ho messo il commandfile li..
ti allego l'esempio che attualmente ho controllato e che funziona sul mio PC server web.
questo è il file listadir.asp che sta nella cartella mioweblocale
e questo è il file "listadir.cmd"<%
Dim wshShell
set wshShell = CreateObject("WScript.Shell")
wshShell.run "c:\\inetpub\\wwwroot\\mioweblocale\\CGI\\listadir .cmd"
if err.number = 0 then
response.write "<br>GENERAZIONE FILE CON TUTTE LE CARTELLE PRESENTI NELLA CARTELLA ROOT SELEZIONATA..."
end if
set wshShell =nothing
%>
il comando DIR ha lo switrch /A : D che qui traduce in una faccina sorridente...dir c:\inetpub\wwwroot\*.* /B/S/A> c:\inetpub\wwwroot\mioweblocale\public\listadir.tx t
naturalmente sta scrivendo il file nella cartella public dove ha i permessi diu scrittura
poi a te il proseguo tramite FSO lo apri ininput e hai a disposizione tuttel le cartelle in questo caso dalla root del server IIS ma nel tuo caso devi modificare appropriatamente....
Quindi in pratica ho evitato la ricorsione uitilizzando il sistema operativo...
Se puo esserti utile ...
ciao
Ultima modifica di vic53; 22-03-2016 a 14:43 Motivo: non visualizzare la faccina dopo la A
Vic53
Ciao, innanzitutto grazie per la risposta.
In realtà ho fatto anch'io già così però il problema é che io, in questo caso, non so quante e quali siano le sottocartelle... soprattutto il problema é quante. Ossia non so quanti sottolivelli ci sono nei livelli... il problema era proprio questo. Ce ne possono essere 2 come 3 come 50.
Re
...
ma il file che esce da quel comando non contiene files ma solo le cartelle una per ogni record del file e naturalmente ci sono tutte le sottocartelle una dietro l'altra... separate dallo slash; per ognuno di questi record si possono costruire in una tabella db la struttura facendo uso delll'istruzioneSPLIT con il carattere slash per estrarre i sottolivelli e metterli in una table del database. Alla fine del'elaborazione avrai in modo univoco tutte i livelli e i sottolivelli per ognuna directory a partire da quella iniziale... anche il comando TREE fa vedere la struttura oppure elenca i files di tutto l'albero directoy...
Per esempio se devi elaborare tutti i files presenti in ogni cartella e sottocartella..
Altrimenti devi usare il file system FSO e costruirti un algoritmo ad hoc per il tuo caso...
ciao
Vic53
ma si é esattamente quello che faccio normalmente. però questo sistema prevede che tu conosca in anticipo il numero di sottolivelli. probabilmente non ci siamo capiti. io NON SO quanti sono i livelli di sottocartelle. il sistema dovrebbe essere ricorsivo ossia dedurre da solo se esistono sottocartelle e i livelli di sottocartelle.
Ciao
scusa ma non capisco quando dici che devi sapere prima quanti sono i sottolivelli....
il sistema che ho esposto esegue la scansione della struttura delle directory e sottodirectory e da quel file le puoi contare da programma in tempo reale... non prima ma dopo la scansione online...
Poi una volta saputi i nomi delle directory e delle loro sottodirectory.... puoi elabvorarli sequenzialmente...
Non capisco quando dici che deve essere ricorsivo... in questo caso non lo è perche la scansione ti riporta tutte le directory...l'unico neo che puo intoppare il sistema è solo se ci sono nomi di directory tipo quelli che programmano in java e che riscono a superare anche i limiti di utilizzo caratteri nella nomenclatura di file e cartelle nel sistema windows. I nomi directory nel primo livello dei dischi rigidi sono limitati come numero, poi nel secondo livello sono piu flessibili come numero...ma se superano un certo numero ci sono problemi anche li...
Dipende dal tipo di elaborazione che devi fare sui dati e comunque serve un buon algoritmo se vuoi utilizzare la ricorsione al posto della scansione prima dell'elaborazione; spiega meglio cosa vuoi elaborare e magari ci facciamo su un diagramma di flusso per controllare la ricorsione ...
ciao
Vic53