je cherche a effacer recursivement le contenu d'un repertoire.
Precisions:
j'ai un repertoire 'c:\mytmp\resultats' avec des sous repertoires 'cas1',
'cas2', ...
Je voudrais effacer les repertoires 'casX, ... et leur contenu mais
conserver le repertoire 'resultats' (c-a-d ne pas l'effacer)
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
François Picalausa
"Marc" <fun.x@#nospam#caramail.com> a écrit dans le message de news:3fdd8df5$0$28685$
Precisions: j'ai un repertoire 'c:mytmpresultats' avec des sous repertoires 'cas1', 'cas2', ... Je voudrais effacer les repertoires 'casX, ... et leur contenu mais conserver le repertoire 'resultats' (c-a-d ne pas l'effacer)
Bonjour/soir,
en combinant dir avec la fiche 35 de la faq, tu peux arriver à ce que tu veux: Dim strBuffer As String, strFoldersToKill
strBuffer = Dir("c:Windows", vbDirectory Or vbReadOnly Or vbSystem Or vbHidden Or vbArchive)
Do While strBuffer <> "" 'Vérifie qu'il s'agit bien d'un dossier (sinon, les vbNormal y passent aussi) If GetAttr("c:Windows" & strBuffer) And vbDirectory And strBuffer <> "." And strBuffer <> ".." Then strFoldersToKill = strFoldersToKill & "c:Windows" & strBuffer & vbNullChar End If strBuffer = Dir Loop
Sinon, pour le faire "à la main": http://support.microsoft.com/default.aspx?kbid5476 avec Kill pour les fichiers et RmDir pour les dossiers, une fois qu'ils sont vides.
"Marc" <fun.x@#nospam#caramail.com> a écrit dans le message de
news:3fdd8df5$0$28685$626a54ce@news.free.fr
Precisions:
j'ai un repertoire 'c:mytmpresultats' avec des sous repertoires
'cas1', 'cas2', ...
Je voudrais effacer les repertoires 'casX, ... et leur contenu mais
conserver le repertoire 'resultats' (c-a-d ne pas l'effacer)
Bonjour/soir,
en combinant dir avec la fiche 35 de la faq, tu peux arriver à ce que tu
veux:
Dim strBuffer As String, strFoldersToKill
strBuffer = Dir("c:Windows", vbDirectory Or vbReadOnly Or vbSystem Or
vbHidden Or vbArchive)
Do While strBuffer <> ""
'Vérifie qu'il s'agit bien d'un dossier (sinon, les vbNormal y
passent aussi)
If GetAttr("c:Windows" & strBuffer) And vbDirectory And strBuffer
<> "." And strBuffer <> ".." Then
strFoldersToKill = strFoldersToKill & "c:Windows" & strBuffer
& vbNullChar
End If
strBuffer = Dir
Loop
Sinon, pour le faire "à la main":
http://support.microsoft.com/default.aspx?kbid5476
avec Kill pour les fichiers et RmDir pour les dossiers, une fois qu'ils sont
vides.
"Marc" <fun.x@#nospam#caramail.com> a écrit dans le message de news:3fdd8df5$0$28685$
Precisions: j'ai un repertoire 'c:mytmpresultats' avec des sous repertoires 'cas1', 'cas2', ... Je voudrais effacer les repertoires 'casX, ... et leur contenu mais conserver le repertoire 'resultats' (c-a-d ne pas l'effacer)
Bonjour/soir,
en combinant dir avec la fiche 35 de la faq, tu peux arriver à ce que tu veux: Dim strBuffer As String, strFoldersToKill
strBuffer = Dir("c:Windows", vbDirectory Or vbReadOnly Or vbSystem Or vbHidden Or vbArchive)
Do While strBuffer <> "" 'Vérifie qu'il s'agit bien d'un dossier (sinon, les vbNormal y passent aussi) If GetAttr("c:Windows" & strBuffer) And vbDirectory And strBuffer <> "." And strBuffer <> ".." Then strFoldersToKill = strFoldersToKill & "c:Windows" & strBuffer & vbNullChar End If strBuffer = Dir Loop
Sinon, pour le faire "à la main": http://support.microsoft.com/default.aspx?kbid5476 avec Kill pour les fichiers et RmDir pour les dossiers, une fois qu'ils sont vides.
J'ai eu besoin de deux fonctions dont une recursive: (Le code est inspire d'une page sur un site generaliste)
Public Function DelSubDirs(Directory As String) As Boolean Dim SubDir As String Dim Val As String
On Error GoTo Error_Handler
SubDir = Dir(Directory & "*", vbDirectory Or vbNormal) Do While SubDir <> "" If SubDir <> "." And SubDir <> ".." Then If (GetAttr(Directory & "" & SubDir) And vbDirectory) vbDirectory Then DeleteDirectory (Directory & "" & SubDir) Else Val = Directory & SubDir SetAttr Val, vbReadOnly = 0 Kill (Directory & SubDir) End If End If
SubDir = Dir(Directory & "*", vbDirectory Or vbNormal) If SubDir = "." Then SubDir = Dir End If
If SubDir = ".." Then SubDir = Dir End If Loop
DelSubDirs = True Exit Function
Error_Handler: DelSubDirs = False End Function
Public Function DeleteDirectory(Directory As String) As Boolean Dim SubDirectory As String Dim Val As String
On Error GoTo Error_Handler
SubDirectory = Dir(Directory & "*", vbNormal Or vbDirectory) Do While SubDirectory <> "" If SubDirectory <> "." And SubDirectory <> ".." Then If (GetAttr(Directory & "" & SubDirectory) And vbDirectory) vbDirectory Then DeleteDirectory (Directory & "" & SubDirectory & "") Else Val = Directory & "" & SubDirectory SetAttr Val, vbReadOnly = 0 Kill (Directory & "" & SubDirectory) End If End If
SubDirectory = Dir(Directory & "*", vbDirectory + vbHidden + vbSystem + vbArchive) If SubDirectory = "." Then SubDirectory = Dir End If If SubDirectory = ".." Then SubDirectory = Dir End If Loop SetAttr Directory, vbReadOnly = 0 RmDir Directory DeleteDirectory = True Exit Function
Error_Handler: DeleteDirectory = False End Function
"Marc" <fun.x@#nospam#caramail.com> wrote in message news:3fdd8df5$0$28685$
Bonjour/soir,
je cherche a effacer recursivement le contenu d'un repertoire.
Precisions: j'ai un repertoire 'c:mytmpresultats' avec des sous repertoires 'cas1', 'cas2', ... Je voudrais effacer les repertoires 'casX, ... et leur contenu mais conserver le repertoire 'resultats' (c-a-d ne pas l'effacer)
D'avance merci pour votre aide
C'est bon.
J'ai eu besoin de deux fonctions dont une recursive:
(Le code est inspire d'une page sur un site generaliste)
Public Function DelSubDirs(Directory As String) As Boolean
Dim SubDir As String
Dim Val As String
On Error GoTo Error_Handler
SubDir = Dir(Directory & "*", vbDirectory Or vbNormal)
Do While SubDir <> ""
If SubDir <> "." And SubDir <> ".." Then
If (GetAttr(Directory & "" & SubDir) And vbDirectory) vbDirectory Then
DeleteDirectory (Directory & "" & SubDir)
Else
Val = Directory & SubDir
SetAttr Val, vbReadOnly = 0
Kill (Directory & SubDir)
End If
End If
SubDir = Dir(Directory & "*", vbDirectory Or vbNormal)
If SubDir = "." Then
SubDir = Dir
End If
If SubDir = ".." Then
SubDir = Dir
End If
Loop
DelSubDirs = True
Exit Function
Error_Handler:
DelSubDirs = False
End Function
Public Function DeleteDirectory(Directory As String) As Boolean
Dim SubDirectory As String
Dim Val As String
On Error GoTo Error_Handler
SubDirectory = Dir(Directory & "*", vbNormal Or vbDirectory)
Do While SubDirectory <> ""
If SubDirectory <> "." And SubDirectory <> ".." Then
If (GetAttr(Directory & "" & SubDirectory) And vbDirectory) vbDirectory Then
DeleteDirectory (Directory & "" & SubDirectory & "")
Else
Val = Directory & "" & SubDirectory
SetAttr Val, vbReadOnly = 0
Kill (Directory & "" & SubDirectory)
End If
End If
SubDirectory = Dir(Directory & "*", vbDirectory + vbHidden +
vbSystem + vbArchive)
If SubDirectory = "." Then
SubDirectory = Dir
End If
If SubDirectory = ".." Then
SubDirectory = Dir
End If
Loop
SetAttr Directory, vbReadOnly = 0
RmDir Directory
DeleteDirectory = True
Exit Function
Error_Handler:
DeleteDirectory = False
End Function
"Marc" <fun.x@#nospam#caramail.com> wrote in message
news:3fdd8df5$0$28685$626a54ce@news.free.fr...
Bonjour/soir,
je cherche a effacer recursivement le contenu d'un repertoire.
Precisions:
j'ai un repertoire 'c:mytmpresultats' avec des sous repertoires 'cas1',
'cas2', ...
Je voudrais effacer les repertoires 'casX, ... et leur contenu mais
conserver le repertoire 'resultats' (c-a-d ne pas l'effacer)
J'ai eu besoin de deux fonctions dont une recursive: (Le code est inspire d'une page sur un site generaliste)
Public Function DelSubDirs(Directory As String) As Boolean Dim SubDir As String Dim Val As String
On Error GoTo Error_Handler
SubDir = Dir(Directory & "*", vbDirectory Or vbNormal) Do While SubDir <> "" If SubDir <> "." And SubDir <> ".." Then If (GetAttr(Directory & "" & SubDir) And vbDirectory) vbDirectory Then DeleteDirectory (Directory & "" & SubDir) Else Val = Directory & SubDir SetAttr Val, vbReadOnly = 0 Kill (Directory & SubDir) End If End If
SubDir = Dir(Directory & "*", vbDirectory Or vbNormal) If SubDir = "." Then SubDir = Dir End If
If SubDir = ".." Then SubDir = Dir End If Loop
DelSubDirs = True Exit Function
Error_Handler: DelSubDirs = False End Function
Public Function DeleteDirectory(Directory As String) As Boolean Dim SubDirectory As String Dim Val As String
On Error GoTo Error_Handler
SubDirectory = Dir(Directory & "*", vbNormal Or vbDirectory) Do While SubDirectory <> "" If SubDirectory <> "." And SubDirectory <> ".." Then If (GetAttr(Directory & "" & SubDirectory) And vbDirectory) vbDirectory Then DeleteDirectory (Directory & "" & SubDirectory & "") Else Val = Directory & "" & SubDirectory SetAttr Val, vbReadOnly = 0 Kill (Directory & "" & SubDirectory) End If End If
SubDirectory = Dir(Directory & "*", vbDirectory + vbHidden + vbSystem + vbArchive) If SubDirectory = "." Then SubDirectory = Dir End If If SubDirectory = ".." Then SubDirectory = Dir End If Loop SetAttr Directory, vbReadOnly = 0 RmDir Directory DeleteDirectory = True Exit Function
Error_Handler: DeleteDirectory = False End Function
"Marc" <fun.x@#nospam#caramail.com> wrote in message news:3fdd8df5$0$28685$
Bonjour/soir,
je cherche a effacer recursivement le contenu d'un repertoire.
Precisions: j'ai un repertoire 'c:mytmpresultats' avec des sous repertoires 'cas1', 'cas2', ... Je voudrais effacer les repertoires 'casX, ... et leur contenu mais conserver le repertoire 'resultats' (c-a-d ne pas l'effacer)