Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Discussione: ASP: lettura ricorsiva

Hybrid View

  1. #1

    ASP: lettura ricorsiva

    Salve, devo leggere le sottocartelle di una cartella in modo ricorsivo, ossia tutte le sottocartelle. Qualcuno sa darmi indicazioni? Grazie in anticipo

  2. #2

  3. #3
    ok. Grazie, ho visto il tutorial. però non mi sembra sia ricorsivo.

  4. #4
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,812
    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

  5. #5
    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

  6. #6
    Utente di HTML.it L'avatar di vic53
    Registrato dal
    Oct 2010
    residenza
    Fonte Nuova (Roma)
    Messaggi
    592

    lettura delle cartelle e sottocartelle senza tralasciarne nessuna

    Quote Originariamente inviata da marco.agelao Visualizza il messaggio
    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

    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
    <%
    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
    %>
    e questo è il file "listadir.cmd"
    dir c:\inetpub\wwwroot\*.* /B/S/A > c:\inetpub\wwwroot\mioweblocale\public\listadir.tx t
    il comando DIR ha lo switrch /A : D che qui traduce in una faccina sorridente...

    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

  7. #7
    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.

  8. #8
    Utente di HTML.it L'avatar di vic53
    Registrato dal
    Oct 2010
    residenza
    Fonte Nuova (Roma)
    Messaggi
    592
    Quote Originariamente inviata da marco.agelao Visualizza il messaggio
    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

  9. #9
    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.

  10. #10
    Utente di HTML.it L'avatar di vic53
    Registrato dal
    Oct 2010
    residenza
    Fonte Nuova (Roma)
    Messaggi
    592
    Quote Originariamente inviata da marco.agelao Visualizza il messaggio
    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

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.