[R] Comment supprimer tous les fichier .doc saut ceux du dossier nommé "Mes fichiers" avec "_FileListToArrayRec"

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Boulanza
Niveau 9
Niveau 9
Messages : 697
Enregistré le : mer. 31 juil. 2013 15:49
Status : Hors ligne

[R] Comment supprimer tous les fichier .doc saut ceux du dossier nommé "Mes fichiers" avec "_FileListToArrayRec"

#1

Message 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
   Next
EndFunc
Modifié en dernier par Boulanza le mer. 23 mai 2018 17:04, modifié 1 fois.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Comment supprimer tous les fichier .doc saut ceux du dossier nommé "Mes fichiers" avec "_FileListToArrayRec"

#2

Message par Tlem »

Encore vous !!! :lol:

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.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Boulanza
Niveau 9
Niveau 9
Messages : 697
Enregistré le : mer. 31 juil. 2013 15:49
Status : Hors ligne

Re: [..] Comment supprimer tous les fichier .doc saut ceux du dossier nommé "Mes fichiers" avec "_FileListToArrayRec"

#3

Message par Boulanza »

ContinueLoop c'est nouveau pour moi...
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Comment supprimer tous les fichier .doc saut ceux du dossier nommé "Mes fichiers" avec "_FileListToArrayRec"

#4

Message 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.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1020
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: [..] Comment supprimer tous les fichier .doc saut ceux du dossier nommé "Mes fichiers" avec "_FileListToArrayRec"

#5

Message 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. :roll:

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à :wink:

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 :mrgreen:
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Boulanza
Niveau 9
Niveau 9
Messages : 697
Enregistré le : mer. 31 juil. 2013 15:49
Status : Hors ligne

Re: [..] Comment supprimer tous les fichier .doc saut ceux du dossier nommé "Mes fichiers" avec "_FileListToArrayRec"

#6

Message 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
        Next
EndFunc
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1020
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: [..] Comment supprimer tous les fichier .doc saut ceux du dossier nommé "Mes fichiers" avec "_FileListToArrayRec"

#7

Message 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 ?...
Fichiers joints
Capture.JPG
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Boulanza
Niveau 9
Niveau 9
Messages : 697
Enregistré le : mer. 31 juil. 2013 15:49
Status : Hors ligne

Re: [..] Comment supprimer tous les fichier .doc saut ceux du dossier nommé "Mes fichiers" avec "_FileListToArrayRec"

#8

Message 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.
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1020
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: [..] Comment supprimer tous les fichier .doc saut ceux du dossier nommé "Mes fichiers" avec "_FileListToArrayRec"

#9

Message par walkson »

Sincèrement on tourne en rond :shock:
#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
        Next
EndFunc
 
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)
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Boulanza
Niveau 9
Niveau 9
Messages : 697
Enregistré le : mer. 31 juil. 2013 15:49
Status : Hors ligne

Re: [..] Comment supprimer tous les fichier .doc saut ceux du dossier nommé "Mes fichiers" avec "_FileListToArrayRec"

#10

Message 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.
Répondre