Page 1 sur 1
[R] Effacement des dossiers si vides
Posté : ven. 17 févr. 2012 14:08
par Gnifrus
Bonjour,
Je recherche une méthode ou une piste pour faire la chose suivante :
Je dispose d'un dossier, qui a une arborescence de dossiers et fichiers que je ne connais pas à l'avance, sur n profondeur.
Je souhaiterai effacer les dossiers vides, ou les dossiers qui contiennent des dossiers vides....etc...
En gros, ne conserver que arborescence des dossiers qui contiennent des fichiers, ou dit différemment, seuls les fichiers m’intéressent dans cette arborescence, donc je veux virer tous les autres dossiers inutiles...
Je pensais qu'il fallait faire d'abord un tableau de cette arborescence, pour commencer à traiter les dossiers les plus "éloignés" du dossier de base, et ainsi de suite....
Vous en pensez quoi ? Que me donneriez vous comme solution, piste ou autre ?
Merci d'avance pour votre aide, car je suis un petit peu bloqué !
Bonne journée,
Gnifrus.
Re: [..] Effacement des dossiers si vides
Posté : ven. 17 févr. 2012 14:38
par DimVar
Bonjour,
Je pense qu'une recherche avec "_FileListToArray recursive" sur le forum anglais t'aidera.
Cdlt.
Re: [..] Effacement des dossiers si vides
Posté : ven. 17 févr. 2012 17:10
par SurPriseS
Code : Tout sélectionner
#include<Array.au3>
#include<FileListToArrayNT.au3>
$start = 0
while $start = 0
$ar_Array = _FileListToArrayNT ("Z:\backup Cobian", "*.*", 2, 2, True, "Temp")
For $i = 1 to $ar_Array[0]
sleep(10)
$start = 1
$size = DirGetSize($ar_Array[$i], 1)
if $size[0] = 0 and $size[1] = 0 and $size[2] = 0 Then
DirRemove($ar_Array[$i])
$start = 0
EndIf
Next
WEnd
Bon, c'est un truc que j'avais fait à l'arrache un jour, je pense que c'est très très moche, mais bon, ça marche !
L'include :
http://www.autoitscript.fr/forum/viewto ... 893#p34893
Re: [..] Effacement des dossiers si vides
Posté : ven. 17 févr. 2012 19:47
par Tlem
@DimVar
Pourquoi renvoyer vers le forum Anglais, alors qu'il y a tout ce qu'il faut ici :
http://www.autoitscript.fr/forum/viewto ... f=21&t=479
@SurPriseS
Il n'est pas raisonable de présenter un code qui fait appel à une fonction non standard d'AutoIt sans en indiqué la source ou le code ...
Re: [..] Effacement des dossiers si vides
Posté : ven. 17 févr. 2012 21:33
par Gnifrus
Merci à tous pour votre aide !
Je ne connaissais pas ces fonctions...
Je vais essayer d'exploiter cette piste dès lundi, au boulot.
Dans l'attente, je laisse mon topic ouvert et vous tiendrai au courant !
Un grand grand merci encore !
Gnifrus.
Re: [..] Effacement des dossiers si vides
Posté : ven. 17 févr. 2012 21:54
par SurPriseS
Tlem a écrit :
@SurPriseS
Il n'est pas raisonable de présenter un code qui fait appel à une fonction non standard d'AutoIt sans en indiqué la source ou le code ...
J'étais au taff, je savais bien que je zappais un morceau

J'ai édité

Re: [..] Effacement des dossiers si vides
Posté : mar. 21 févr. 2012 15:29
par Gnifrus
Bonjour,
Merci beaucoup !
J'ai essayé et ça marche impec !
Vous m'avez encore sauvé d'un mauvais pas !!!
@bientôt, (je n'en doute pas...

)
Gnifrus.
Re: Effacement des dossiers si vides
Posté : mer. 27 mars 2013 20:21
par Gnifrus
Bonjour,
Je me permets de relancer mon sujet sur l'effacement des dossiers vides, car lorsque j'ai voulu réessayer le code de SurPriseS, je me suis aperçu qu'il générait une erreur "Subscript used with non-Array variable" dans certaines situations, notamment lorsque le dossier dans lequel rechercher les dossiers vides, ne comportait aucun dossier ou que des dossiers vides.
J'ai cherché toute la journée, mais là, je jette l'éponge !!!
Y aurait-il une âme charitable pour me venir en aide ?
Merci par avance,
Bonne soirée,
Gnifrus
Re: Effacement des dossiers si vides
Posté : mer. 27 mars 2013 22:14
par parazitenew
Cette erreur signifie que l'Array est vide, pour éviter cette erreur ajoute ceci après que l'Array soit crée:
Code : Tout sélectionner
If Not @Error Then
Execute moi le reste du script
Else
Tu sors
EndIf
Si il n'y a pas d'erreur, dans ce cas, le script continue, sinon il passe son chemain.
Re: Effacement des dossiers si vides
Posté : jeu. 28 mars 2013 11:50
par Gnifrus
Bonjour,
Merci parazitenew !
Ta solution fonctionne parfaitement !
J'avais bien essayé avec un "If Not @Error Then..." mais comme un c.., j'avais mis un "Return" pour sortir de la boucle au lieu d'un "ExitLoop" !
Quel boulet !
Merci encore,
Bonne continuation et... à bientôt,
Gnifrus.