Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1

    Elenco e conteggio files nelle Sottocartelle

    Ciao a tutti, sto cercando di realizzare uno script che conteggia ed elenca i files .jpg contenuti all'interno di sottocartelle presenti in una determinata directory. Sono riuscito solo in parte a farlo, infatti con lo script che riporto qui sotto riesco ad elencare le sottocartelle ed i file della directory principale, ma non quelli delle sottocartelle.

    <%
    Set objFso = CreateObject("Scripting.FileSystemObject")
    cartella = "/public/fotoalbum/"
    Set objFolder = objFso.GetFolder(Server.MapPath(cartella))
    Set objSubFolders = objFolder.SubFolders
    strExt = ".jpg"

    For Each strSubFolder in objSubFolders
    Response.Write(strSubFolder.name & "
    ")
    Next
    Response.Write("
    ")
    Set files = objFolder.Files

    numfile = 0
    For Each strFile in files
    if Right(strFile.name, Len(strExt)) = strExt then
    numfile = (numfile + 1)
    Response.Write(strFile.name & " " & strFile.size & "Byte
    ")
    end if
    Next
    Response.Write ("
    Numero di file " & strExt & " presenti : " & numfile)
    Set objFso=Nothing
    Set objFolder=Nothing
    Set objSubFolders=Nothing
    Set files=Nothing
    %>

    Qualcuno mi può aiutare? Grazie.

  2. #2
    devi fare una funzione ricorsiva...ovvero una funzione a cui passi la path della cartella e questa la stampi e, se incontra altre cartelle, richiami se stessa passando come path la nuova sotto cartella che ha creato

    se cerchi sul forum qualcosa dovresti trovare

  3. #3

    ho dato un'occhiata nel forum cercando "funzione ricorsiva" ma siceramente non ho capito un azz..
    Un aiutino?

  4. #4
    boh non so che suggerirti apparte di cercare "elenco cartelle" , guardare questo script:

    http://forum.html.it/forum/showthrea...lenco+cartelle (sempre fatto da me)

    e quest'altro:

    codice:
    dim fso,mioAlbero
    
    
    
    'sub di partenza
    sub stampaAlbero(percorso)
    
    apriFso()
    
    if fso.FolderExists(percorso) then
    stampaIntestazione
    apri "albero"
    createTree percorso
    chiudi "albero"
    else
    toStamp "Errore nella procedura: percorso di partenza errato",99
    end if
    
    chiudiFso()
    end sub
    
    'sub ausiliaria per inizializzare fso
    sub apriFso()
    if not isObject(fso) then set fso=server.CreateObject("scripting.filesystemobject")
    end sub
    
    'sub ausiliaria per chiudere fso
    sub chiudiFso()
    if isObject(fso) then set fso=nothing
    end sub
    
    
    'sub di avvio creazione albero
    sub createTree(percorso)
    'per ogni folder che trovo richiamo createTree
    dim folder,files,genitore,nomecartella
    
    
    if fso.folderExists(percorso) then
    
    'ricavo il nomecartella
    nomecartella=getStr(percorso,0)
    genitore=getStr(percorso,1)
    
    apri "cartella nome=""" & nomecartella & """ parent=""" & genitore & """"
    
    'attributo "nome",nomecartella 'opzionale
    'attributo "genitore",genitore 'opzionale
    
    set folder=fso.getFolder(percorso)
    'stampo prima tutti i sottoFolder
    
    for each subF in folder.subFolders
    createTree percorso & "\" & subF.name
    next
    
    'stampo tutti i File
    
    set files=folder.Files
    conta=0
    for each file in files
    conta=conta+1
    if conta=1 then apri "elencofile"
    toStamp file.name,2
    next
    if conta>0 then chiudi "elencofile"
    
    set file=nothing
    set folder=nothing
    
    chiudi "cartella"   'chiudo l'elemento cartella
    else
    
    toStamp "Errore nel percorso",99
    end if
    end sub
    
    'stampo l'intestazione dell'xml
    sub stampaIntestazione()
    mioAlbero=mioAlbero & "<?xml version=""1.0"" encoding=""UTF-8""?>"
    end sub
    
    'stampo gli elementi (file o errori)
    sub toStamp(oggetto,tipo)
    dim tagApri, tagChiudi
    select case tipo
    case 2
    tagApri="<file>"
    tagChiudi="</file>"
    case else
    tagApri="<errore>"
    tagChiudi="</errore>"
    end select
    mioAlbero=mioAlbero & tagApri & "<![CDATA[" & oggetto & "]]>" & tagChiudi
    end sub
    
    'apro un entita nome
    sub apri(nome)
    mioAlbero=mioAlbero & "<" & nome & ">"
    end sub
    
    'chiudo un entita nome
    sub chiudi(nome)
    mioAlbero=mioAlbero & "</" & nome & ">"
    end sub
    
    'stampo un entita nome con dentro un valore
    sub attributo(nome,valore)
    mioAlbero=mioAlbero & "<" & nome & "><![CDATA[" & valore & "]]>" & "</" & nome & ">"
    end sub
    
    'recupero un pezzo specifico del percorso
    function getStr(stringa,numero)
    dim temp,max
    temp=split(stringa,"\")
    max=ubound(temp)
    getStr=temp(max-numero)
    end function
    
    stampaAlbero "C:\cartella_inizio"  'riempio mioAlbero
    
    ' Impostazione che setta il tipo di file in output su XML
    response.ContentType = "text/xml"
    response.Write mioAlbero  'stampo l'albero

    non sono un granchè però se ti spulci il codice qualcosa capisci per poi fare quello che chiedi

  5. #5
    Grazie Santino, mi metto a "spulciare"!!

  6. #6
    Arieccomi .. non avendoci capito molto di "ricorsiva" ho provato a creare dei cicli For e miracolosamente ci sono riuscito! Riesco ad elencare tutte le sottocartelle del 2° sottolivello ed i files contenuti in esse (e fino qui tutto ok), riportando anche il parziale del numero di file per ogni cartella (wow), ma però ho due piccoli problemini:
    1- Vorrei visualizzare anche pagina il totale dei file presenti e il totale dei byte, e sono talmente fuso che non riesco;
    2 - se la foto ha estensione ".JPG" e non ".jpg" non la vede essendo "case sensible", nella variabile strExt = ".jpg" ho provato con strExt = ".jpg,.JPG", ma nisba.

    Riporto qui di seguito lo script completo:

    <%
    Set objFso = CreateObject("Scripting.FileSystemObject")

    cartella = "/public/fotoalbum/"
    Set objFolder = objFso.GetFolder(Server.MapPath(cartella))
    Set objSubFolders = objFolder.SubFolders
    strExt = ".jpg"

    For Each strSubFolder in objSubFolders
    Subcartella = "/public/fotoalbum/" & strSubFolder.name
    Set objSubFolder = objFso.GetFolder(Server.MapPath(Subcartella))
    Set objSubSubFolders = objSubFolder.SubFolders
    For Each strSubSubFolder in objSubSubFolders
    SubSubcartella = "/public/fotoalbum/" & strSubFolder.name &"/"& strSubSubFolder.name
    Response.Write(SubSubcartella)
    Response.Write("
    ")
    Set objSubSubFolder = objFso.GetFolder(Server.MapPath(SubSubcartella))
    Set files = objSubSubFolder.Files
    numfile = 0
    For Each strFile in files
    if Right(strFile.name, Len(strExt)) = strExt then
    numfile = (numfile + 1)
    Response.Write(strFile.name & " " & strFile.size & "Byte
    ")
    end if
    Next
    Response.Write ("
    Numero di file " & strExt & " presenti : " & numfile)
    Response.Write ("
    Byte totali : " )
    Next
    Next

    Set objFso=Nothing
    Set objFolder=Nothing
    Set objSubFolder=Nothing
    Set objSubFolders=Nothing
    Set objSubSubFolders=Nothing
    Set objSubSubFolder=Nothing
    Set files=Nothing
    %>

    Un aiutino?

  7. #7
    il problema dell'estensione maiuscola .JPG l'ho risolto con un ElseIf, ma non riesco ancora ad avere il numero dei files totali presenti nelle sottocartelle, ma solo i parziali per ogni cartella, sicuramente è semplice ma non ci sto riuscendo.
    Un aiutino?

  8. #8
    .. visto la mia ignoranza in materia, ho pensato di memorizzare ogni parziale in un file di testo, ma adesso come faccio a sommarli?
    Leggendo il file di testo con "ReadLine" ottengo una cosa del genere:

    109+55+156+19+1+63+46+85+11+56+40+85+6+7+16....

  9. #9
    Mamma mia quanto odio lavorare con gli Array in vbscript...

    codice:
    dim numeroImmagini
    
    numeroImmagini=0
    redim ElencoFile(0)
    
    Sub ScorriCartelle(pathFolder,extToFind)
    
    dim fso,folder
    
    set fso=server.CreateObject("scripting.FileSystemObject")
    if fso.FolderExists(pathFolder) then
    
    	set folder=fso.getFolder(pathFolder)
    
    	'scorro le subFolder
    	for each subF in folder.subFolders
    		call ScorriCartelle(pathFolder & "\" & subF.name,extToFind)
    	next
    	
    	'scorro i files
    	for each file in folder.Files
    		if ucase(right(file.name,3))=ucase(extToFind) then
    			
    			redim preserve ElencoFile(numeroImmagini)
    			ElencoFile(numeroImmagini)=file.name
    			numeroImmagini=numeroImmagini+1
    			
    		end if
    	next
    	
    	set folder=nothing
    end if
    
    set fso=nothing
    
    end sub
    
    
    ScorriCartelle server.MapPath("immagini"),"jpg"
    
    response.write "Immagini trovate:"
    
    response.Write(numeroImmagini & "
    ")
    
    response.Write("Elenco dei file con estensione jpg:
    ")
    for each immagine in ElencoFile
    	response.write immagine & "
    "
    next

    EDIT: al posto di server.MapPath("immagini") metti l'indirizzo (FISICO o col mapPath) della cartella di partenza...volendo puoi usare anche altre estenzioni

  10. #10
    m'inginocchio davanti alla magia...
    Grazie mille Santino, ancora una volta mi sei stato di grande aiuto.
    Ormai ti devo una fornitura di piadine vita natural durante!!
    Thanks!

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.