ChristopheMan
Messages postés5Date d'inscriptionlundi 5 novembre 2007StatutMembreDernière intervention17 mars 2008
-
5 nov. 2007 à 15:00
caco64
Messages postés69Date d'inscriptionjeudi 27 septembre 2007StatutMembreDernière intervention14 décembre 2007
-
6 nov. 2007 à 08:44
Bonjour,
je voudrais faire un delete de fichiers dans plusieurs répertoire ça c'est simple.
Par contre pour faire ce delete je voudrais me servir d'un fichier txt de référence pour exclure certain fichiers (dans le fichier txt le nom et l'extension est utilisé).
Avez-vous une idée comment dois-je mis prendre ?
Merci de votre aide.
ChristopheMan
caco64
Messages postés69Date d'inscriptionjeudi 27 septembre 2007StatutMembreDernière intervention14 décembre 2007 5 nov. 2007 à 16:09
Moi, je commencerais par lire le fichier texte et je stockerais les noms de fichier récupérés ainsi dans une variable de type string
redim preserve fichier_a_garder(1 to compteur)
lien input
dim i as long
dim fichier_a_garder() as string
Open fichier_texte For Input As #1
i = 0
Do While Not EOF(1)
i = i + 1
ReDim preserve fichier_a_garder(1 to i)
Line Input #1, fichier_a_garder(i)
Loop
Ensuite, tu récupères un à un les noms des fichiers de ton répertoire (et éventuellement des sous-répertoires) et tu vérifies s'il appartient à la liste.
S'il n'y est pas tu le vires.
C'est pas très dur à faire. Si tu n'y arrives pas, j'ai un bout de code qui ne doit pas être très long à adapter.
N'hésites pas à faire signe.
caco64
Messages postés69Date d'inscriptionjeudi 27 septembre 2007StatutMembreDernière intervention14 décembre 2007 6 nov. 2007 à 08:44
Voilà le code que je te propose.
Pas encore testé mais ça devrait pas être loin de fonctionner, je suis parti d'une procédure qu marchait parfaitement.
Sub lancer_proc()
Dim i As Long
Dim fichier_a_garder() As String
'lecture du fichier texte
Open fichier_texte For Input As #1 'mettre la bonne adresse de fichier
i = 0
Do While Not EOF(1)
i = i + 1
ReDim Preserve fichier_a_garder(1 To i)
Line Input #1, fichier_a_garder(i)
Loop
Close #1
'appel de la procédure accede_repertoire
Call accede_repertoire("C:\Eric_test")
End Sub
Sub accede_repertoire(chemin As String)
Dim fs 'filesystemobject
Dim fr 'répertoire recherché sur le réseau
Dim fr_c 'collection des sous-répertoires du répertoire
Dim fr_1 '1 sous-réperoire de cette collection
Dim ff_c 'collection des fichiers du répertoire
Dim ff_1 '1 fichier de cette collection
Dim typ_fich As String
Dim fich_adresse As String, fich_nom As String
Dim i As Long, n As Long
Set fs = CreateObject("Scripting.FileSystemObject")
Set fr = fs.GetFolder(chemin)
Set fr_c = fr.subfolders
Set ff_c = fr.Files
For Each ff_1 In ff_c
fich_nom = ff_1.Name
n = UBound(fichier_a_garder)
For i = 1 To n
If fich_nom = fichier_a_garder(i) Then
Exit For 'si le nom du fichier existe dans la base, on sort de for ElseIf i n And fich_nom fichier_a_garder(i) Then
ff_1.Delete 'si le nom n'a pas été trouvé dans la base, on efface le fichier
End If
Next i
Next
'on balaie tous les sous-répertoires et on refait pareil
'à l'aide d'une procédure qui s'auto-appelle autant de fois que de besoin
For Each fr_1 In fr_c
Call accede_repertoire(fr_1.Path)
Next