Suppression de fichiers listé dans un fichier texte
huby40one
Messages postés2Date d'inscriptionsamedi 4 mars 2006StatutMembreDernière intervention 2 octobre 2006
-
2 oct. 2006 à 10:07
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 2012
-
2 oct. 2006 à 14:04
Bonjour à la communauté,
J'expose mon probleme,
J'ai dans un fichier texte (.txt), une liste de fichier (jpg pour la plus part).
Dans un Dossier (Uploads), j'ai un certains nombres de fichiers dont les fichiers à supprimé compris dans ce fichier txt.
Voilà j'aimerai savoir comment proceder pour faire un script qui aprcours mon fichier txt et qu'il aille supprimer dans ce dossier le fichiers correspondant.
La liste comprend plus de 5500 fichiers... vous comprenez que je ne peux pas aller supprimer un à un les fichiers.
je remercie d'avance les personne qui pourront me guider et m'aider sur ce probleme
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 2 oct. 2006 à 10:46
Salut,
Essaie le code suivant, en espérant qu il réponde à tes besoins.
Les noms des fichiers a supprimer sont dans mon exemple contenu dans C:\A_Supprimer.txt sous la forme
C:\toto.xls
C:\Test\Tp.jpg
....
'Ligne lu dans le fichier
Dim TmpFichier As String
Dim NumFile As Integer
NumFile = FreeFile
'OUvre le fichier en lecture
Open "C:\A_Supprimer.txt" For Input As NumFile
'Boucle pour parcourir tout le fichier
While Not EOF(NumFile)
'Recuperation ligne par ligne
'(Chaque ligne contenant UN chemin de fichier a supprimer)
Line Input #NumFile, TmpFichier
'Suppression du fichier si il existe
If (Dir(TmpFichier) <> "") Then Call Kill(TmpFichier)
Set fso = CreateObject("Scripting.FileSystemObject")
Set ObjTextStream = Fso.OpenTextFile(Path1 & Fic1, 1)
Do While Not ObjTextStream.AtEndOfStream
strtmp = split(ObjTextStream.ReadLine, vbLf)
For i = 0 to Ubound(strtmp)
If Fso.FileExists(Path2 & strtmp(i)) Then Fso.DeleteFile Path2 & strtmp(i)
Next
Loop
ObjTextStream.Close
En VB6 (cela sera tres proche).
J'ai choisi de mettre la référence Microsoft Scripting Runtime (pour avoir les menu déroulant)
Cela donnerait( si je ne me trompe pas car je n'ai pas testé) mais de toute facon ton code passe directement en VB6 sans aucune modifications necessaire je crois
Option Explicit
Private Sub Form_Load()
Dim Fso As New FileSystemObject
Dim Path1 As String, Fic1 As String, Path2 As String
Dim i As Integer
Dim ObjTextStream As TextStream
Dim Contenu As String
Dim Lignes
Path1 = "d:\huby40one"
Path2 = "d:\huby40one\UpLoad"
Fic1 = "Liste des fichiers a supprimer.txt"
'Ouverture du fichier en lecture
Set ObjTextStream = Fso.OpenTextFile(Path1 & Fic1, ForReading)
'recuperation du contenu du fichier
Contenu = ObjTextStream.ReadAll
'Fermeture du fichier
Call ObjTextStream.Close
'Recuperation de toutes les lignes par split du contenu
Lignes = Split(Contenu, vbCrLf)
'Boucle pour chaque ligne
For i = 0 To UBound (Lignes)
If Fso.FileExists(Path2 & Lignes(i)) Then Call Fso.DeleteFile(Path2 & Lignes(i))
Next
'destruction des objets
Set ObjTextStream = Nothing
Set Fso = Nothing
End Sub