purge repertoire

cyril_25

XLDnaute Nouveau
Bonjour a tous,
J'ai une application (pro-E) qui cree des fichiers temporaires dans le repertoire de travail. Ces fichiers sont stucturés de la manière suivante :

nom_du_fichier.extension.index

ou l'extension peut etre DRW, ASM ou PRT et l'index un chiffre qui debute à 1 et qui est incrémenté automatiquement par le logiciel à chaque sauvegarde. Ce système est pratique car il permet toujours de retrouver des versions antérieures des fichiers en cas d'erreur par exemple. Par contre lorsque le travail est terminé il faut éliminer tous les fichiers sauf l'indice le plus élevé pour éviter de consommer trop d'espace disque.


Merci

Cyril
 

TempusFugit

XLDnaute Impliqué
Re : purge repertoire

Bonjour


Quel est le rapport avec Excel ?

Pour ton problème, utilise la commande MSDOS : del dans un fichier batch (extention :.bat ou .cmd)
exemple:
del /s c:\toto\*.drw
del /s c:\toto\*.asm
del /s c:\toto\*.prt
(ATTENTION: les commandes ci-dessus effacent tous les fichiers *.drw, *.asm et *.prt)
Pour connaitre les option de del, tu peux faire del /?

Pour un script plus poussé (qui préserve le fichier avec l'index le plus élevé) tu peux aussi utiliser un script vbs
(Tu touveras des exemples sur des sites dédiés à vbs)
 
Dernière édition:

cyril_25

XLDnaute Nouveau
Re : purge repertoire

Le problème est que pour un nom de fichier et une extension (par ex : toto.drw.3) je dois supprimer tous les index (toto.drw.1 ; toto.drw.2) mais pas le dernier (le 3 en l'occurence). Je ne sais pas automatiser cela en commande dos. Voila pourquoi excel et son VBA.

Cyril
 

TempusFugit

XLDnaute Impliqué
Re : purge repertoire

Inutile de passer par Excel et son VBA, VBS peut suffire.

Un exemple simple de suppression par VBS
(a copier/coller dans le bloc-notes et enregistrer sous test.vbs)

Code:
Dim fso, fichier, Chemin
Set fso=CreateObject("Scripting.FileSystemObject")
Chemin="C:\Test\"

For Each Fichier In fso.GetFolder(Chemin).Files
Fichier.delete
Next

reste à créer un script selon tes conditions.

Il existe plusieurs sites internet dédiés à VBS.

En voici un pour découvrir VBS.
Introduction au langage VBScript
 
Dernière édition:

cyril_25

XLDnaute Nouveau
Re : purge repertoire

OK merci je vais regarder comme ca...
Ce ne serait pas plutot file.delete que fichier.delete ???
Je ne connais pas vbs, il me paraissait donc plus simple de le faire en vba, car plus facile à debuger... Mais il faut tenter de nouvelles expériences...

Merci
 

TempusFugit

XLDnaute Impliqué
Re : purge repertoire

Non c'est Fichier.Delete
Sinon j'aurai écris
Dim fso, file, Chemin

Post scriptum: Le VBS est trés proche de VBA.

Pour ton script tu peux utiliser : DateLastModified par exemple et comparer avec la date du jour
si tu veux supprimer les plus anciens fichiers sauf celui qui est le plus proche de la date du jour.
 
Dernière édition:

TempusFugit

XLDnaute Impliqué
Re : purge repertoire

Je te poste un exemple (au fait on peut éxécuter du VBS dans Excel, donc lance la macro ci-dessous depuis Excel)
Crées un dossier Tests sur ton lecteur C
puis copie dedans 2,3 fichiers dont la date de création est inférieure à aujourd'hui
puis lances la macro.

Tu vois qu'on peut faire pas mal de choses avec VBS.

Code:
Sub TestVBSdansExcel()
On Error Resume Next
Dim oFSO, Dossier, Chemin
Dim Fichiers, Fichier

Chemin = "C:\Tests"

Set oFSO = CreateObject("Scripting.FileSystemObject")
Set Dossier = oFSO.GetFolder(Chemin)
Set Fichiers = Dossier.Files

For Each Fichier In Fichiers
If Fichier.DateLastModified < Date Then
MsgBox Fichier.Name
End If
Next

Set oFSO = Nothing
Set Dossier = Nothing
Set Fichiers = Nothing
Set Fichier = Nothing
End Sub
 

LPandre

XLDnaute Impliqué
Re : purge repertoire

Bonjour,
je reprends ce post, car souhaitant supprimer, une fois une date passée, par macro un répertoire contenant des sous répertoires et/ ou des fichiers, j'ai récupéré sur le web les codes ci dessous censés le faire. Sauf que j'ai un message "Permission refusée". Comment faire ? :
1er code :
Sub SupprDoss()
Dim FS
Set FS = CreateObject("Scripting.FileSystemObject")
FS.DeleteFolder "C:\TestDelete"
End Sub


2ème code
Sub DeleteFolder()
Dim oFSO As Scripting.FileSystemObject
Dim oDrv As Drive
Dim oFl As Folder
'Instanciation du FSO
Set oFSO = New Scripting.FileSystemObject
'Instanciation du Fl
Set oFl = oFSO.GetFolder("C:\TestDelete")
'supprimer le repertoire
oFl.Delete
End Sub
 

Staple1600

XLDnaute Barbatruc
Re : purge repertoire

Bonjour à tous

LPandre
Je suppose la version de ton OS est Seven ou supérieur, non ?
Si oui, il n'y pas grand chose à faire dans ce cas avec VBscript.

Sauf peut-être à mettre les mains dans le cambouis
How to delete folders which requires special permission? - Control Panel - Windows 7
Voir les deux liens présents en bas de page dans le post de neieuis.
 

Statistiques des forums

Discussions
312 520
Messages
2 089 285
Membres
104 083
dernier inscrit
hecko