Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    [VB6] Directory e subdirectory. Esiste un loop per leggere tutto?

    Ciao.

    Ho una mia directory sul desktop di nome APPOGGIO con dentro altrettante directory con sottodirectory etc.. etc.. praticamente n'annidamento di directory e files :maLOL: :maLOL:

    Esiste un codice o un loop che mi controlli file per file tutti i nomi dei files e delle sottocartelle (e via di seguito) presenti nella cartella APPOGGIO?

    Tenete presente che non conosco il numero di files e directory contenute in APPOGGIO.

    Grazie na cifra
    Dalla vita altrui attingeva la sua oscura magia...
    Membro del Sacro Ordine degli elfi oscuri di Kand

  2. #2
    Ecco un esempio di funzione ricorsiva che puoi adattare al tuo scopo:
    codice:
    Private Sub Command1_Click()
        Dim fso As New FileSystemObject
        Dim f As Folder
        
        Set f = fso.GetFolder("c:\")
        
        Call ScanDir(f)
        
    End Sub
    
    Public Sub ScanDir(fol As Folder)
        Dim fl As Folder
        Dim fi As File
        
        For Each fi In fol.Files
            Debug.Print fi.path
        Next
        
        For Each fl In fol.SubFolders
            Call ScanDir(fl)
        Next
    End Sub
    RIcordati di aggiungere ai riferimenti la libreria "Microsoft Scripting Runtime". Ciao
    Chi non cerca trova.

  3. #3
    Tas grazie mille è proprio ciò che mi serve

    A buon rendere
    Dalla vita altrui attingeva la sua oscura magia...
    Membro del Sacro Ordine degli elfi oscuri di Kand

  4. #4
    Ne approfitto e poi chiudo, promesso

    Ho usato il codice ed è perfetto.
    Su alcuni file però (soprattutto quelli di windows) mi restituisce un errore 70 (accesso negato) e fin qui tutto giusto xchè s'incacchia se gli tocco le 'cose' sue...

    A me interessa memorizzare però un elenco dei files che mi vengono scartati e continuare il loop...

    Ho usato on error resume next però non riesco a capire come fare a dirgli

    "on error aggiungimi il nome del file che dà errore in una listbox"

    codice:
    Public Sub ScanDir(fol As Folder)
        Dim fl As Folder
        Dim fi As File
        
        For Each fi In fol.Files
    on error(riempimi la listbox con il nome del file)resume next        
    Debug.Print fi.path
        Next
        
        For Each fl In fol.SubFolders
            Call ScanDir(fl)
        Next
    End Sub
    Mi dai anche questa di dritta?

    Grazie ancora cià
    Dalla vita altrui attingeva la sua oscura magia...
    Membro del Sacro Ordine degli elfi oscuri di Kand

  5. #5
    Ho provato a fare la scansione dell'intero disco c (!) ma non mi ha dato nessun tipo di errore (Win XP SP2, tu invece?). Stai utilizzando il codice che hai postato oppure hai elaborato una tua versione?
    Chi non cerca trova.

  6. #6
    Uso il tuo codice e funziona correttamente (su xp sp2 però deve poter funzionare su tutti i win).
    L'errore me lo dà nella cartella RECYCLED.
    Ma cmq a me interessa sapere come comportarmi in case di erroe durante la scansione (che per ciò che devo fare io sarà frequente, soprattutto il 'file in uso') e per questo volevo memorizzare il nome di ogni file in errore in una listbox.

    Tas, grazie ancora na volta.
    Attendo ansioso
    Cià
    Dalla vita altrui attingeva la sua oscura magia...
    Membro del Sacro Ordine degli elfi oscuri di Kand

  7. #7
    La sintassi per On Error è:
    codice:
    On Error Resume Next
    
    '... codice che potrebbe generare un errore
    
    'trappola errore
    If Err.Number <> 0 Then
       'gestione errore
    End If
    
    'fine gestione errore
    On Error Goto 0
    Mi piacerebbe sapere in che riga si verifica quell'errore, tanto per curiosità!
    Chi non cerca trova.

  8. #8
    L'errore mi viene generato nel For each.
    Dalla vita altrui attingeva la sua oscura magia...
    Membro del Sacro Ordine degli elfi oscuri di Kand

  9. #9
    Una soluzione al problema dovrebbe essere questa:
    codice:
    Public Sub ScanDir(fol As Folder)
        Dim fl As Folder
        Dim fi As File
        Dim i As Integer
        Dim ff As Files
        Dim fs As Folders
        
        On Error Resume Next
        Set ff = fol.Files
        If Err.Number = 0 Then
            For Each fi In fol.Files
                Debug.Print fi.Path
            Next
        Else
            Debug.Print "La cartella " & fol.Name & " non permette l'accesso ai subfiles."
        End If
        
        Set fs = fol.SubFolders
        If Err.Number = 0 Then
            For Each fl In fol.SubFolders
                Call ScanDir(fl)
            Next
        Else
            Debug.Print "La cartella " & fol.Name & " non permette l'accesso alle subfolders."
        End If
        On Error GoTo 0
    End Sub
    Chi non cerca trova.

  10. #10
    Ok perfetto, tutto ok...

    Grazie Tas .. pizza pagata

    Ciao
    Dalla vita altrui attingeva la sua oscura magia...
    Membro del Sacro Ordine degli elfi oscuri di Kand

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.