Page 1 sur 1
[R] Comment supprimer tous les fichier .doc saut ceux du dossier nommé "Mes fichiers" avec "_FileListToArrayRec"
Posté : mar. 22 mai 2018 20:28
par Boulanza
Bonsoir,
Comment peut on supprimer tous les fichier .doc date du jour, avec la condition de ne pas supprimer ceux du dossier nommé "Mes fichiers" avec "_FileListToArrayRec" dans le code ci-joint.
j'ai pensé à la solution suivante :
Ajouter FileSetAttrib($array[$i]&"/Mes fichiers/, "+AHRS", 0) puisque "_FileListToArrayRec" ne supprime pas les fichiers cachés. Je cherche une meilleure proposition que celle proposée sur le scripte.
Merci d’avance pour votre aide.
Cordialement.
SuppFichiers
() Func SuppFichiers
() Local $arrayDrive = DriveGetDrive("All") For $y = 1 To $arrayDrive[0] ;boucle sur drive $Drive = StringUpper($arrayDrive[$y]) & "\" $array = _FileListToArrayRec($Drive, "*.doc", $FLTAR_FILES, $FLTAR_RECUR, $FLTAR_NOSORT, $FLTAR_FULLPATH) ;le file, récursive, pas de trie, chemin complet If IsArray($array) Then For $i = 1 To $array[0] $info = StringLeft(FileGetTime($array[$i], 1, 1), 8) $info_1 = StringLeft(FileGetTime($array[$i], 0, 1), 8) If $info = @YEAR & @MON & @MDAY Or $info_1 = @YEAR & @MON & @MDAY Then ;si créé ou modifié FileSetAttrib($array[$i], "-AHRS", 0) Sleep(2000) FileSetAttrib($array[$i]&"/Mes fichiers/*.doc", "+AHRS", 0) Sleep(2000) ;~ ;FileDelete($array[$i]) FileRecycle ($array[$i]) EndIf Next Else MsgBox(0,$Drive,"rien de trouvé") EndIf NextEndFunc
Re: [..] Comment supprimer tous les fichier .doc saut ceux du dossier nommé "Mes fichiers" avec "_FileListToArrayRec"
Posté : mar. 22 mai 2018 21:23
par Tlem
Encore vous !!!
Indice :
_FileListToArrayRec
utilisé avec
$FLTAR_FULLPATH
(tel que vous le faites dans votre code, liste dans votre tableau le nom et le chemin de chaque fichier .doc trouvé dans
$Drive
.
Du coup, dans votre boucle
For $i = 1 To $array[0]
il vous suffit de vérifier le chemin du fichier à traiter. S'il contient "Mes Fichiers" alors =>
ContinueLoop
sinon on fait le traitement.
Re: [..] Comment supprimer tous les fichier .doc saut ceux du dossier nommé "Mes fichiers" avec "_FileListToArrayRec"
Posté : mar. 22 mai 2018 22:24
par Boulanza
ContinueLoop c'est nouveau pour moi...
Re: [..] Comment supprimer tous les fichier .doc saut ceux du dossier nommé "Mes fichiers" avec "_FileListToArrayRec"
Posté : mer. 23 mai 2018 00:22
par Tlem
Ben, comme je vous l'ai déjà dit, si vous lisiez plus attentivement la documentation, vous l'auriez vu car la commande
ContinueLoop
est indiquée dans le types de boucle :
et dans l'aide le la commande
ExitLoop
.
Re: [..] Comment supprimer tous les fichier .doc saut ceux du dossier nommé "Mes fichiers" avec "_FileListToArrayRec"
Posté : mer. 23 mai 2018 10:42
par walkson
Bonjour,
Pour info, vous avez l'aide en français à cette adresse
https://www.autoitscript.fr/download/in ... mentation/
Presque à chaque fonction, vous avez un exemple que vous pouvez ouvrir dans Scite en cliquant sur "Ouvrir ce script", ce qui permet de voir la fonction en action et son rôle !
_FileListToArrayRec ne supprime pas les fichiers cachés
_FileListToArrayRec() ne supprime aucun fichier mais fait une recherche
Je n'ai toujours pas compris FileSetAttrib() car après multiples essais, le code supprime les fichiers masqués ou en lecture seul ou avec un mot de passe sous Word ???? et il me semble que je ne suis pas le seul.
Il existe une autre méthode que celle de Tlem
_FileListToArrayRec($Drive, "*.doc;*.iso||$Recycle.Bin;Mes Fichiers", $FLTAR_FILES, $FLTAR_RECUR, $FLTAR_NOSORT, $FLTAR_FULLPATH)
- Recherche des extensions doc et iso
- exclue de la recherche les dossiers $Recycle.Bin (poubelle) et Mes fichiers sur l'ensemble du PC
ex: Mes fichiers sur C: et Mes fichiers sur E: seront ignorés
Rmq: j'ai mis la poubelle car si vous lancez 2 fois le code dans la journée, vous risquez d'envoyer des fichiers à la poubelle alors qu'ils y sont déjà
Tlem vous reproche, à juste titre, de ne pas lire l'aide. Moi, je vous reprocherais (en plus) de ne pas tester vos codes pour trouver et vérifier des solutions !
La meilleur progression que l'on puisse faire provient le plus souvent de sa propre expérience

Re: [..] Comment supprimer tous les fichier .doc saut ceux du dossier nommé "Mes fichiers" avec "_FileListToArrayRec"
Posté : mer. 23 mai 2018 13:28
par Boulanza
Bonjour tout le monde,
- J'ai suivie les instruction de Monsieur Tlem, voir code ci-dessous, effectivement tous les fichiers .iso date du jour sont supprimés, sauf les fichier qui se trouvent dans le dossier "Mes fichiers", mais avec la condition que les fichiers ne soient pas cachés.
- Si les fichiers sont cachés le code ne marche pas même lorsque on ajoute " FileSetAttrib($array[$i], "-AHRS", 0)".
- Je confirme à Monsieur walkson que le code ne supprime les fichiers masqués ou en lecture seul. Sauf erreur dans le code.
_FileListToArrayRec($Drive, "*.doc;*.iso||$Recycle.Bin;Mes Fichiers", $FLTAR_FILES, $FLTAR_RECUR, $FLTAR_NOSORT, $FLTAR_FULLPATH)
ne marche pas.
N.B: Le test est fait avec fichier .iso
Cordialement.
SuppFichiers
() Func SuppFichiers
() Local $arrayDrive = DriveGetDrive("All") For $y = 1 To $arrayDrive[0] ;boucle sur drive $Drive = StringUpper($arrayDrive[$y]) & "\" $array = _FileListToArrayRec($Drive, "*.iso", $FLTAR_FILES, $FLTAR_RECUR, $FLTAR_NOSORT, $FLTAR_FULLPATH) ;le file, récursive, pas de trie, chemin complet If IsArray($array) Then ; _ArrayDisplay($array) For $i = 1 To $array[0] ;boucle sur fichier Doc $info = StringLeft(FileGetTime($array[$i], 1, 1), 8) $info_1 = StringLeft(FileGetTime($array[$i], 0, 1), 8) $info_2 = StringLeft(FileGetTime($array[$i]&"\Mes Fichiers\*.iso", 0, 1), 8) If $info = @YEAR & @MON & @MDAY Or $info_2 = @YEAR & @MON & @MDAY Then ContinueLoop If $info = @YEAR & @MON & @MDAY Or $info_1 = @YEAR & @MON & @MDAY Then ;si créé ou modifié ; FileSetAttrib($array[$i], "-AHRS", 0) Sleep(2000) FileSetAttrib($array[$i]&"/Mes fichiers/*.iso", "+AHRS", 0) Sleep(2000) ;~ ;FileDelete($array[$i]) FileRecycle ($array[$i]) EndIf Next Else MsgBox(0,$Drive,"rien de trouvé") EndIf NextEndFunc
Re: [..] Comment supprimer tous les fichier .doc saut ceux du dossier nommé "Mes fichiers" avec "_FileListToArrayRec"
Posté : mer. 23 mai 2018 14:21
par walkson
Voilà ma corbeille après exécution du script sur doc et iso sous Win 7 sur mon PC. G:\ étant un disque dur externe
Que dire de plus à part la question "quel sont vos droits administrateur " si cela peut empêcher la suppression de fichiers ?...
Re: [..] Comment supprimer tous les fichier .doc saut ceux du dossier nommé "Mes fichiers" avec "_FileListToArrayRec"
Posté : mer. 23 mai 2018 14:28
par Boulanza
Merci pour votre réponse,
Je suis sur Win 10 64 bits
Peut être c'est un problème de script. Pouvez-vous nous communiquer votre script test, merci.
Cordialement.
Re: [..] Comment supprimer tous les fichier .doc saut ceux du dossier nommé "Mes fichiers" avec "_FileListToArrayRec"
Posté : mer. 23 mai 2018 15:01
par walkson
Sincèrement on tourne en rond
#include <File.au3>#include <Array.au3>SuppFichiers
() Func SuppFichiers
() Local $arrayDrive = DriveGetDrive("All") For $y = 1 To $arrayDrive[0] ;boucle sur drive $Drive = StringUpper($arrayDrive[$y]) & "\" $array = _FileListToArrayRec($Drive, "*.doc;*.iso||$Recycle.Bin;Mes Fichiers", $FLTAR_FILES, $FLTAR_RECUR, $FLTAR_NOSORT, $FLTAR_FULLPATH) ;le file, récursive, pas de trie, chemin complet If IsArray($array) Then _ArrayDisplay($array) For $i = 1 To $array[0] $info = StringLeft(FileGetTime($array[$i], 1, 1), 8) $info_1 = StringLeft(FileGetTime($array[$i], 0, 1), 8) If $info = @YEAR & @MON & @MDAY Or $info_1 = @YEAR & @MON & @MDAY Then ;si créé ou modifié MsgBox(0,"",$array[$i]) ;~ ;FileDelete($array[$i]) FileRecycle ($array[$i]) EndIf Next Else MsgBox(0,$Drive,"rien de trouvé") EndIf NextEndFunc
Le code est toujours le même à part le masque
Par contre, je doute fortement sur votre code !
Mettez en dessous de
$info_2 = StringLeft(FileGetTime($array[$i]&"\Mes Fichiers\*.iso", 0, 1), 8)
ceci:
ConsoleWrite($info &">>"& $info_1 &">>info2 >>"& $info_2 & @CR)
Valeur de $info_2 ????
Je confirme, vous ne testez pas assez vos codes !!!
Pour savoir si "Mes Fichiers" est dans le chemin ($array[$i]), on peut utiliser StringInStr() (si > 0 il y est => voir l'aide)
Re: [..] Comment supprimer tous les fichier .doc saut ceux du dossier nommé "Mes fichiers" avec "_FileListToArrayRec"
Posté : mer. 23 mai 2018 17:02
par Boulanza
Bonjour Monsieur walkson,
Merci infiniment pour votre aide ainsi que votre compréhension.Votre dernier code marche parfaitement pour supprimer les fichiers cachés, en plus il ne supprime pas les fichiers se trouvant dans le dossier "Mes fichiers" .$array = _FileListToArrayRec($Drive, "*.iso;||$Recycle.Bin;Mes Fichiers", $FLTAR_FILES, $FLTAR_RECUR, $FLTAR_NOSORT, $FLTAR_FULLPATH) ;le file, récursive, pas de trie, chemin complet
Cordialement.