Accueil > > > SUPPRIMER UN RÉPERTOIRE ET TOUT SON CONTENU (SOUS-DOSSIERS ET FICHIERS)
SUPPRIMER UN RÉPERTOIRE ET TOUT SON CONTENU (SOUS-DOSSIERS ET FICHIERS)
Information sur la source
Description
Cette fonction est extrèmement simple. Elle permet de supprimer un dossier et tout son contenu (sous-répertoires et fichiers). La fonction renvoie "True" si le processus de suppression s'est déroulé normalement. Sinon, elle renvoie "False". Particularités intéressantes : - Elle permet de supprimer les fichiers et les dossiers qui sont en lecture seule; - Elle permet de supprimer les fichiers et les dossiers cachés (y compris les fichiers système tels que Thumbs.db, ...). - Elle permet de supprimer le contenu d'un lecteur. Limitations : - Elle ne permet pas la suppression de fichiers en cours d'utilisation; - Elle ne permet pas la suppression de fichiers et/ou de dossiers en cours de visualisation (dans l'explorateur Windows ou autre). La fonction est désormais disponible en 3 versions : la première ne permet pas le vidage des dossiers temporaires de Windows, la seconde bien. En fait, la deuxième permet le vidage de dossiers contenant des fichiers en cours d'utilisation. La troisième est une évolution de la seconde qui permet, si on le désire, de ne supprimer que les répertoires vides et les fichiers vides (dont la taille est de 0 octets). ATTENTION : - Prenez la peine de lire les remarques ! Pour les débutants : - Ne copiez, dans votre module ou programme, qu'une des 3 versions de la fonction !
Source
- ' Version qui ne permet pas le vidage des dossiers temporaires de Windows :
-
- Public Function SupprimeRépertoire(Répertoire As String) As Boolean
- On Error GoTo Erreur
- Dim SousRépertoire As String
- Dim Val As String
- SousRépertoire = Dir(Répertoire, vbDirectory + vbHidden + vbSystem + vbArchive)
- Do While SousRépertoire <> ""
- If SousRépertoire <> "." And SousRépertoire <> ".." Then
- If (GetAttr(Répertoire & SousRépertoire) And vbDirectory) = vbDirectory Then
- ' C'est un sous-répertoire. Donc, on effectue un appel récursif.
- SupprimeRépertoire (Répertoire & SousRépertoire & "\")
- Else
- ' C'est un fichier. Donc, on concatène le nom du répertoire avec le sien.
- Val = Répertoire & SousRépertoire
- ' On s'assure que le fichier n'est pas en lecture seule.
- SetAttr Val, vbReadOnly = 0
- ' On supprime le fichier.
- Kill (Répertoire & SousRépertoire)
- End If
- End If
- ' Dir peut avoir été appelé, donc on réinitialise le tout.
- SousRépertoire = Dir(Répertoire, vbDirectory + vbHidden + vbSystem + vbArchive)
- ' Pour passer le répertoire courant et le répertoire parent.
- If SousRépertoire = "." Then
- SousRépertoire = Dir
- End If
- If SousRépertoire = ".." Then
- SousRépertoire = Dir
- End If
- Loop
- If ((Right(Répertoire, 2)) <> ":\") Then
- ' Ce n'est pas la racine du disque, donc on supprime après s'être assuré que le répertoire n'est pas en lecture seule.
- SetAttr Répertoire, vbReadOnly = 0
- RmDir Répertoire
- End If
- SupprimeRépertoire = True
- Exit Function
-
- Erreur:
- SupprimeRépertoire = False
- End Function
-
- ' Remarque : Si un fichier ou un dossier ne peut être supprimé parce qu'il est en cours d'utilisation, la valeur retournée est "False". Les fichiers qui suivent celui qui n'a pu être supprimé, ne sont donc pas supprimés.
-
-
-
-
-
- ' Version qui permet le vidage des dossiers temporaires de Windows (vidage de dossiers contenant des fichiers en cours d'utilisation) :
-
- Public Function SupprimeRépertoire(Répertoire As String) As Boolean
- On Error GoTo Erreur
- Dim SousRépertoireOuFichier As String
- Dim Val As String
- Dim MyArray() As String
- Dim I As Long
- Dim J As Long
- SousRépertoireOuFichier = Dir(Répertoire, vbDirectory + vbHidden + vbSystem + vbArchive)
- I = 0
- Do While SousRépertoireOuFichier <> ""
- If SousRépertoireOuFichier <> "." And SousRépertoireOuFichier <> ".." Then
- ' Redimensionne le tableau dynamique tout en conservant les éventuelles valeurs présentes.
- ReDim Preserve MyArray(I + 1)
- If (GetAttr(Répertoire & SousRépertoireOuFichier) And vbDirectory) = vbDirectory Then
- MyArray(I) = Répertoire & SousRépertoireOuFichier & "\"
- Else
- MyArray(I) = Répertoire & SousRépertoireOuFichier
- End If
- I = I + 1
- End If
- SousRépertoireOuFichier = Dir
- Loop
- J = 0
- Do While J < I
- If Right(MyArray(J), 1) = "\" Then
- ' C'est un sous-répertoire. Donc, on effectue un appel récursif.
- SupprimeRépertoire (MyArray(J))
- Else
- ' C'est un fichier.
- ' Resume Next pour passer à l'instruction suivante si la suppression échoue.
- On Error Resume Next
- Val = MyArray(J)
- ' On s'assure que le fichier n'est pas en lecture seule.
- SetAttr Val, vbReadOnly = 0
- ' On supprime le fichier.
- Kill (Val)
- ' On réactive la gestion des erreurs normale.
- On Error GoTo Erreur
- End If
- J = J + 1
- Loop
- If ((Right(Répertoire, 2)) <> ":\") Then
- ' Ce n'est pas la racine du disque, donc on supprime après s'être assuré que le répertoire n'est pas en lecture seule.
- SetAttr Répertoire, vbReadOnly = 0
- RmDir Répertoire
- End If
- SupprimeRépertoire = True
- Exit Function
-
- Erreur:
- SupprimeRépertoire = False
- End Function
-
- ' Remarque : Si cette fonction est utilisée pour vider un répertoire temporaire de Windows, il est fort probable qu'elle retourne False, car elle ne sait évidemment pas supprimer un répertoire contenant des fichiers en cours d'utilisation.
- ' Elle ne fait que passer ceux qui ne sont pas supprimables. Donc, elle supprimera tout ce qu'il est possible de supprimer.
- ' Si le dossier temporaire de Windows ne contient aucun fichier en cours d'utilisation, la fonction pourra faire totalement son travail et retournera True.
- ' N'oubliez pas de recréer le dossier temporaire dans ce cas !
- ' Sinon, vous risquez d'avoir quelques surprises lors des prochaines installations de logiciels, ...
-
-
-
-
-
- ' Version qui permet, si on le désire, de ne supprimer que les répertoires et les fichiers vides :
-
- Public Function SupprimeRépertoire(Répertoire As String, Optional ByVal FichiersVidesSeulement As Boolean = False) As Boolean
- On Error GoTo Erreur
- Dim SousRépertoireOuFichier As String
- Dim Val As String
- Dim MyArray() As String
- Dim I As Long
- Dim J As Long
- SousRépertoireOuFichier = Dir(Répertoire, vbDirectory + vbHidden + vbSystem + vbArchive)
- I = 0
- Do While SousRépertoireOuFichier <> ""
- If SousRépertoireOuFichier <> "." And SousRépertoireOuFichier <> ".." Then
- ' Redimensionne le tableau dynamique tout en conservant les éventuelles valeurs présentes.
- ReDim Preserve MyArray(I + 1)
- If (GetAttr(Répertoire & SousRépertoireOuFichier) And vbDirectory) = vbDirectory Then
- MyArray(I) = Répertoire & SousRépertoireOuFichier & "\"
- Else
- MyArray(I) = Répertoire & SousRépertoireOuFichier
- End If
- I = I + 1
- End If
- SousRépertoireOuFichier = Dir
- Loop
- J = 0
- Do While J < I
- If Right(MyArray(J), 1) = "\" Then
- ' C'est un sous-répertoire. Donc, on effectue un appel récursif.
- SupprimeRépertoire MyArray(J), FichiersVidesSeulement
- Else
- ' C'est un fichier.
- ' Resume Next pour passer à l'instruction suivante si la suppression échoue.
- On Error Resume Next
- Val = MyArray(J)
-
- If (Not FichiersVidesSeulement) Then
- ' On s'assure que le fichier n'est pas en lecture seule.
- SetAttr Val, vbReadOnly = 0
- ' On supprime le fichier.
- Kill (Val)
- Else
- If (FileLen(Val) = 0) Then
- ' On s'assure que le fichier n'est pas en lecture seule.
- SetAttr Val, vbReadOnly = 0
- ' On supprime le fichier.
- Kill (Val)
- End If
- End If
-
- ' On réactive la gestion des erreurs normale.
- On Error GoTo Erreur
- End If
- J = J + 1
- Loop
- If ((Right(Répertoire, 2)) <> ":\") Then
- ' Ce n'est pas la racine du disque, donc on supprime après s'être assuré que le répertoire n'est pas en lecture seule.
- SetAttr Répertoire, vbReadOnly = 0
- RmDir Répertoire
- End If
- SupprimeRépertoire = True
- Exit Function
-
- Erreur:
- SupprimeRépertoire = False
- End Function
-
- ' Remarque : Toutes les remarques de la deuxième version s'appliquent également à celle-ci. Veuillez les lire aussi...
- ' Pour ne supprimer que les répertoires et les fichiers vides, effectuez un appel dans le genre de celui qui suit :
- ' SupprimeRépertoire "X:\MonDossier\", True
' Version qui ne permet pas le vidage des dossiers temporaires de Windows :
Public Function SupprimeRépertoire(Répertoire As String) As Boolean
On Error GoTo Erreur
Dim SousRépertoire As String
Dim Val As String
SousRépertoire = Dir(Répertoire, vbDirectory + vbHidden + vbSystem + vbArchive)
Do While SousRépertoire <> ""
If SousRépertoire <> "." And SousRépertoire <> ".." Then
If (GetAttr(Répertoire & SousRépertoire) And vbDirectory) = vbDirectory Then
' C'est un sous-répertoire. Donc, on effectue un appel récursif.
SupprimeRépertoire (Répertoire & SousRépertoire & "\")
Else
' C'est un fichier. Donc, on concatène le nom du répertoire avec le sien.
Val = Répertoire & SousRépertoire
' On s'assure que le fichier n'est pas en lecture seule.
SetAttr Val, vbReadOnly = 0
' On supprime le fichier.
Kill (Répertoire & SousRépertoire)
End If
End If
' Dir peut avoir été appelé, donc on réinitialise le tout.
SousRépertoire = Dir(Répertoire, vbDirectory + vbHidden + vbSystem + vbArchive)
' Pour passer le répertoire courant et le répertoire parent.
If SousRépertoire = "." Then
SousRépertoire = Dir
End If
If SousRépertoire = ".." Then
SousRépertoire = Dir
End If
Loop
If ((Right(Répertoire, 2)) <> ":\") Then
' Ce n'est pas la racine du disque, donc on supprime après s'être assuré que le répertoire n'est pas en lecture seule.
SetAttr Répertoire, vbReadOnly = 0
RmDir Répertoire
End If
SupprimeRépertoire = True
Exit Function
Erreur:
SupprimeRépertoire = False
End Function
' Remarque : Si un fichier ou un dossier ne peut être supprimé parce qu'il est en cours d'utilisation, la valeur retournée est "False". Les fichiers qui suivent celui qui n'a pu être supprimé, ne sont donc pas supprimés.
' Version qui permet le vidage des dossiers temporaires de Windows (vidage de dossiers contenant des fichiers en cours d'utilisation) :
Public Function SupprimeRépertoire(Répertoire As String) As Boolean
On Error GoTo Erreur
Dim SousRépertoireOuFichier As String
Dim Val As String
Dim MyArray() As String
Dim I As Long
Dim J As Long
SousRépertoireOuFichier = Dir(Répertoire, vbDirectory + vbHidden + vbSystem + vbArchive)
I = 0
Do While SousRépertoireOuFichier <> ""
If SousRépertoireOuFichier <> "." And SousRépertoireOuFichier <> ".." Then
' Redimensionne le tableau dynamique tout en conservant les éventuelles valeurs présentes.
ReDim Preserve MyArray(I + 1)
If (GetAttr(Répertoire & SousRépertoireOuFichier) And vbDirectory) = vbDirectory Then
MyArray(I) = Répertoire & SousRépertoireOuFichier & "\"
Else
MyArray(I) = Répertoire & SousRépertoireOuFichier
End If
I = I + 1
End If
SousRépertoireOuFichier = Dir
Loop
J = 0
Do While J < I
If Right(MyArray(J), 1) = "\" Then
' C'est un sous-répertoire. Donc, on effectue un appel récursif.
SupprimeRépertoire (MyArray(J))
Else
' C'est un fichier.
' Resume Next pour passer à l'instruction suivante si la suppression échoue.
On Error Resume Next
Val = MyArray(J)
' On s'assure que le fichier n'est pas en lecture seule.
SetAttr Val, vbReadOnly = 0
' On supprime le fichier.
Kill (Val)
' On réactive la gestion des erreurs normale.
On Error GoTo Erreur
End If
J = J + 1
Loop
If ((Right(Répertoire, 2)) <> ":\") Then
' Ce n'est pas la racine du disque, donc on supprime après s'être assuré que le répertoire n'est pas en lecture seule.
SetAttr Répertoire, vbReadOnly = 0
RmDir Répertoire
End If
SupprimeRépertoire = True
Exit Function
Erreur:
SupprimeRépertoire = False
End Function
' Remarque : Si cette fonction est utilisée pour vider un répertoire temporaire de Windows, il est fort probable qu'elle retourne False, car elle ne sait évidemment pas supprimer un répertoire contenant des fichiers en cours d'utilisation.
' Elle ne fait que passer ceux qui ne sont pas supprimables. Donc, elle supprimera tout ce qu'il est possible de supprimer.
' Si le dossier temporaire de Windows ne contient aucun fichier en cours d'utilisation, la fonction pourra faire totalement son travail et retournera True.
' N'oubliez pas de recréer le dossier temporaire dans ce cas !
' Sinon, vous risquez d'avoir quelques surprises lors des prochaines installations de logiciels, ...
' Version qui permet, si on le désire, de ne supprimer que les répertoires et les fichiers vides :
Public Function SupprimeRépertoire(Répertoire As String, Optional ByVal FichiersVidesSeulement As Boolean = False) As Boolean
On Error GoTo Erreur
Dim SousRépertoireOuFichier As String
Dim Val As String
Dim MyArray() As String
Dim I As Long
Dim J As Long
SousRépertoireOuFichier = Dir(Répertoire, vbDirectory + vbHidden + vbSystem + vbArchive)
I = 0
Do While SousRépertoireOuFichier <> ""
If SousRépertoireOuFichier <> "." And SousRépertoireOuFichier <> ".." Then
' Redimensionne le tableau dynamique tout en conservant les éventuelles valeurs présentes.
ReDim Preserve MyArray(I + 1)
If (GetAttr(Répertoire & SousRépertoireOuFichier) And vbDirectory) = vbDirectory Then
MyArray(I) = Répertoire & SousRépertoireOuFichier & "\"
Else
MyArray(I) = Répertoire & SousRépertoireOuFichier
End If
I = I + 1
End If
SousRépertoireOuFichier = Dir
Loop
J = 0
Do While J < I
If Right(MyArray(J), 1) = "\" Then
' C'est un sous-répertoire. Donc, on effectue un appel récursif.
SupprimeRépertoire MyArray(J), FichiersVidesSeulement
Else
' C'est un fichier.
' Resume Next pour passer à l'instruction suivante si la suppression échoue.
On Error Resume Next
Val = MyArray(J)
If (Not FichiersVidesSeulement) Then
' On s'assure que le fichier n'est pas en lecture seule.
SetAttr Val, vbReadOnly = 0
' On supprime le fichier.
Kill (Val)
Else
If (FileLen(Val) = 0) Then
' On s'assure que le fichier n'est pas en lecture seule.
SetAttr Val, vbReadOnly = 0
' On supprime le fichier.
Kill (Val)
End If
End If
' On réactive la gestion des erreurs normale.
On Error GoTo Erreur
End If
J = J + 1
Loop
If ((Right(Répertoire, 2)) <> ":\") Then
' Ce n'est pas la racine du disque, donc on supprime après s'être assuré que le répertoire n'est pas en lecture seule.
SetAttr Répertoire, vbReadOnly = 0
RmDir Répertoire
End If
SupprimeRépertoire = True
Exit Function
Erreur:
SupprimeRépertoire = False
End Function
' Remarque : Toutes les remarques de la deuxième version s'appliquent également à celle-ci. Veuillez les lire aussi...
' Pour ne supprimer que les répertoires et les fichiers vides, effectuez un appel dans le genre de celui qui suit :
' SupprimeRépertoire "X:\MonDossier\", True
Conclusion
Pas de bugs connus. Voilà ! Si mon travail vous intéresse, rendez-vous sur mon site Web : http://www.tcedi.com
Bonne programmation !!!
Historique
- 23 janvier 2005 01:46:03 :
- La mise à jour comprends :
- Une gestion améliorée de la suppression des lecteurs (Ne retourne plus False alors que tout s'est bien passé);
- Ajout de commentaires;
- Ajout d'une seconde version de la fonction permettant le vidage des dossiers temporaires de Windows ou tout autre dossier contenant des fichiers en cours d'exécution. Avec cette version de la fonction, tout ce qui est supprimable est supprimé !
- 23 janvier 2005 09:47:52 :
- Petite clarification des commentaires
- 24 mai 2006 20:34:35 :
- Ajout d'une troisième version de la fonction permettant, si on le désire, de ne supprimer que les répertoires et les fichiers vides.
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Supprimer un répertoire plein de fichiers ! [ par Jonef ]
J'aimerais bien pouvoir supprimer un répertoire contenant des fichiers et des sous-répertoires sans avoir à supprimer les sous répertoires un par un.M
Suppression de fichiers particulière... [ par andrieuremi ]
Bonjour à tous!Quelqu'un connaîtrai-t-il une procédure ou un code VB me permettant de supprimer tout le contenu d'un dossier (fichiers + sous-dossiers
Supprimer fichiers .txt d'un répertoire [ par evilmajestik ]
Salut tout le monde !Je cherche un petit bout de code pour supprimer tous les fichiers textes dans un répertoire précis quelque soit le nomb
tous supprimer dans un dossier [ par tonprofde_math ]
salut, je veux faire un prog qui supprime les cookies,les fichiesr dans temp,les fichiers dans tempory internet files et l'historique.(j'utilise
Supprimer des fichiers dans un répertoire [ par thenonos ]
Bonjour, dans le cadre de projet dans mon école, je dois créer un programme permettant de supprimer des fichiers dans un répertoir
Supprimer tous les fichiers .txt d'un répertoire à une heure précise [ par gradenko80 ]
Bonsoir,Je suis débutant en VB et je souhaiterais savoir assez rapidement le code que je dois écrire pour supprimer tous les fichiers .txt d
supprimer dossier,fichiers [ par mahelan ]
Bonjour,J'ai un autre petit soucissi je veut faire supprimer des dossiers ou fichiers,cette commande marcheSet objFSO = CreateObject("Scripting.FileSy
Copier fichiers sur CD. [ par Marneus73 ]
Bonjour à tousJe voudrais savoir comment faire pour copier un dossier avec tous ses fichiers et sous dossiers vers un autre dossier.Le seul probleme e
Nom de fichier [ par wanure ]
Bonjour, Je souhaiterai connaître le code qui éxécuterai la chose suivante :Modifier automatiquement les noms de X fichiers se trouvant dans un dossie
|
Derniers Blogs
XNA IS DEAD!XNA IS DEAD! par richardc
Depuis la semaine dernière (et grâce aux TechDays 2012), je me penche activement sur la nouvelle version de Windows, aka Windows 8. Vous me direz, il était temps puisque la première preview date de Septembre dernier.
OK. Remarquez, on n'en est qu'aux...
Cliquez pour lire la suite de l'article par richardc TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 !TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 ! par ROMELARD Fabrice
Speakers: Fabrice Meillon et Stanislas Quastana Cette session est basée entièrement sur celle donnée lors de la BUILD cet hiver. Il n'y a pas d'ajout d'information en rapport avec cet évènement passé. Windows 8 Server sera intégralem...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [HTML5] AUTOUR DU W3C : NOUVEAUX STANDARDS ET WEB MOBILE (LILLE)[HTML5] AUTOUR DU W3C : NOUVEAUX STANDARDS ET WEB MOBILE (LILLE) par Gio
Je m'y prends un peu tard je sais, mais bon je suis développeur web et donc hyper fainéant ! Toujours dans le cadre des technologies émergentes, ici HTML5, parce qu'on aime HTML5 chez Wyg , nous seront présent, le vieux ( Aurélien V.) et moi, pour pr...
Cliquez pour lire la suite de l'article par Gio [WP7] DYNAMICALLY CHANGE STARTUP PAGE[WP7] DYNAMICALLY CHANGE STARTUP PAGE par KooKiz
Let's say that you want to allow the user to customize the startup page of your application. You can easily change the startup page by editing the 'NavigationPage' attribute in the manifest file. But the manifest cannot be modified once the applicatio...
Cliquez pour lire la suite de l'article par KooKiz
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|