| Suppression des vieux fichiers | |
|
|
Auteur | Message |
---|
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Suppression des vieux fichiers Jeu 19 Fév 2015 - 14:58 | |
| Encore une petite sub, cette fois-ci pour supprimer dans un répertoire donné les fichiers d'un type donné plus vieux que x jours. Bien sûr c'est un outil à ne pas mettre entre toutes les mains, du fait que les fichiers sont supprimés définitivement, sans passer par la case corbeille, donc à manipuler avec précautions. J'ai fait ça en particulier pour les fichiers .bak qui finissent par encombrer mon répertoire des sources Panoramic, il est bien évident que les plus anciens sont devenus inutiles, seuls les plus récents peuvent être utiles, au cas z'où. Voici donc la sub avec l'exemple d'utilisation dans mon cas (fichiers .bak du répertoire C:\Panoramic plus vieux que 10 jours). Les dates des fichiers sont converties en nombre de jours, pour faciliter les comparaisons: - Code:
-
DIM rep$,sf$,nj%,ns% rep$ = "C:\PANORAMIC"+CHR$(92) sf$ = "*.bak" nj% = 10 Sup_old(rep$,sf$,nj%): ' suppression des fichiers .bak plus vieux que 10 jours message clipboard_string_paste$+" fichiers supprimés" END ' ============================================================================== SUB Sup_old(rep$,suf$,nj%) ' Suppression de tous les fichiers de type suf$ du répertoire rep$ plus vieux ' que nj% jours ' Le nombre de fichiers supprimés est rendu dans le presse-papier. DIM_LOCAL mm%,i%,j%,art$,dj$,dsj%,ds%,a%,m%,ds_res,ds_bi,ns% IF LABEL("DateSerial")=0 THEN LABEL Dateserial mm% = 1000: WHILE OBJECT_EXISTS(mm%)=1: mm%=mm%+1: END_WHILE MEMO mm%: WIDTH mm%,600: HIDE mm% EXECUTE_WAIT "Cmd.exe /c DIR "+rep$+suf$+" | clip": CLIPBOARD_PASTE mm% j%=VAL(LEFT$(DATE$,2)): m%=VAL(MID$(DATE$,4,2)): a%=VAL(RIGHT$(DATE$,4)) GOSUB DateSerial: dsj% = ds%: ' date série du jour ns% = 0 FOR i% = 1 TO COUNT(mm%) art$=ITEM_READ$(mm%,i%) IF art$<>"" AND LEFT$(art$,1) <> " " j%=VAL(LEFT$(art$,2)): m%=VAL(MID$(art$,4,2)): a%=VAL(MID$(art$,7,4)) GOSUB DateSerial IF ds% < (dsj%-nj%) art$ = RIGHT_POS$(art$,37) FILE_DELETE rep$+art$ ns% = ns%+1: ' nombre de fichiers supprimés END_IF END_IF NEXT i% DELETE mm% CLIPBOARD_STRING_COPY STR$(ns%) EXIT_SUB DateSerial: ' Date série en fonction de Annee, Mois, Jour -> ds% SELECT m% CASE 1: ds_res = 0 CASE 2: ds_res = 31 CASE 3: ds_res = 59 CASE 4: ds_res = 90 CASE 5: ds_res = 120 CASE 6: ds_res = 151 CASE 7: ds_res = 181 CASE 8: ds_res = 212 CASE 9: ds_res = 243 CASE 10: ds_res = 273 CASE 11: ds_res = 304 CASE 12: ds_res = 334 END_SELECT ds_res = ds_res + j% - 1 IF (FRAC(a%/4)=0 AND FRAC(a%/100)>0) OR FRAC(a%/400)=0: ' bissextile IF m% > 2 THEN ds_res = ds_res + 1 END_IF REPEAT a% = a%-1: ds_bi = 0 IF (FRAC(a%/4)=0 AND FRAC(a%/100)>0) OR FRAC(a%/400)=0 THEN ds_bi=1 ds_res = ds_res + 365 + ds_bi UNTIL a% <= 1753 ds% = ds_res-53688: ' date serial RETURN END_SUB ' ============================================================================== PS déjà une correction, ce satané forum m'avait encore bouffé l'antislash de fin dans mon nom de répertoire rep$ ! pas moyen de le remettre, je le mets en code ascii (chr$(92)) grrr...
Dernière édition par JL35 le Jeu 19 Fév 2015 - 15:15, édité 4 fois | |
|
| |
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Suppression des vieux fichiers Jeu 19 Fév 2015 - 15:05 | |
| Pas encore testé, mais ça me plait d'après la description. Merci JL35 | |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Suppression des vieux fichiers Jeu 19 Fév 2015 - 15:08 | |
| On s'est croisés... pas besoin de te conseiller la prudence, c'est évident. Je ne voudrais pas être responsable de la perte de fichiers vitaux ! Et j'en ai profité pour corriger une petite faute d'orthographe... | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Suppression des vieux fichiers Jeu 19 Fév 2015 - 18:03 | |
| Voila une sub qui va rendre service à mon disque qui s’approche de jour en jour de la saturation. Merci JL35 - JL35 a écrit:
- pas besoin de te conseiller la prudence, c'est évident.
Je ne voudrais pas être responsable de la perte de fichiers vitaux ! OK ! Je pige puisque je te lis maintenant. Mais, dans un mois quand j’utiliserai cette fort utile SUB, je n’en suis pas sûr que je me souvienne de cet avertissement. Le mieux est d’incorporer cette mise en garde dans un message lors du déroulement de la sub. J’ai relooké le code à ma manière et ça donne : - Code:
-
rem ============================================================================ rem Vieux fichiers, allez-vous-en ! rem Code original de : JL35 rem Relookage de : Papydall rem ============================================================================ DIM rep$,sf$,nj%,ns% rep$ = "D:\Panoramic\Mesprogrammes"+CHR$(92) : ' A adapter ... sf$ = "*.bak" nj% = 10 Sup_old(rep$,sf$,nj%): ' suppression des fichiers .bak plus vieux que nj% jours END rem ============================================================================ ' Suppression de tous les fichiers de type suf$ du répertoire rep$ plus vieux ' que nj% jours ' Le nombre de fichiers supprimés est rendu dans le presse-papier.
SUB Sup_old(rep$,suf$,nj%) DIM mm%,i%,j%,art$,dj$,dsj%,ds%,a%,m%,ds_bi,ds_res dim_local t$ mm% = 1000: WHILE OBJECT_EXISTS(mm%)=1: mm%=mm%+1: END_WHILE MEMO mm%: WIDTH mm%,600: HIDE 0 EXECUTE_WAIT "Cmd.exe /c DIR "+rep$+suf$+" | clip": CLIPBOARD_PASTE mm% j%=VAL(LEFT$(DATE$,2)): m%=VAL(MID$(DATE$,4,2)): a%=VAL(RIGHT$(DATE$,4)) DateSerial(m%) dsj% = ds%: ' date série du jour ns% = 0 t$ = string$(30," ") +"Attention !!!"+chr$(13)+"Des fichiers vont être définitivement supprimés !" t$ = t$ + chr$(13)+ "Vous êtes prévenu ! Yes : Supprimer No : Annuler" if message_warning_yes_no(t$) <> 1 exit_sub end_if FOR i% = 1 TO COUNT(mm%) art$=ITEM_READ$(mm%,i%) IF art$<>"" AND LEFT$(art$,1) <> " " j%=VAL(LEFT$(art$,2)): m%=VAL(MID$(art$,4,2)): a%=VAL(MID$(art$,7,4)) DateSerial(m%) IF ds% < (dsj%-nj%) art$ = RIGHT_POS$(art$,37) FILE_DELETE rep$+art$ ns% = ns%+1: ' nombre de fichiers supprimés END_IF END_IF NEXT i% if ns% = 0 message "Tâche terminée"+chr$(13)+"Aucun message ne répond à votre demande !!!" exit_sub end_if message clipboard_string_paste$+STR$(ns%)+" fichiers supprimés" DELETE mm% END_SUB rem ============================================================================ ' Date série en fonction de Annee, Mois, Jour -> ds% SUB DateSerial(m%)
SELECT m% CASE 1: ds_res = 0 CASE 2: ds_res = 31 CASE 3: ds_res = 59 CASE 4: ds_res = 90 CASE 5: ds_res = 120 CASE 6: ds_res = 151 CASE 7: ds_res = 181 CASE 8: ds_res = 212 CASE 9: ds_res = 243 CASE 10: ds_res = 273 CASE 11: ds_res = 304 CASE 12: ds_res = 334 END_SELECT ds_res = ds_res + j% - 1 IF (FRAC(a%/4)=0 AND FRAC(a%/100)>0) OR FRAC(a%/400)=0: ' bissextile IF m% > 2 THEN ds_res = ds_res + 1 END_IF REPEAT a% = a%-1: ds_bi = 0 IF (FRAC(a%/4)=0 AND FRAC(a%/100)>0) OR FRAC(a%/400)=0 THEN ds_bi=1 ds_res = ds_res + 365 + ds_bi UNTIL a% <= 1753 ds% = ds_res-53688: ' date serial
END_SUB rem ============================================================================
EDIT J’ai fais le ménage dans plusieurs dossiers et mon disque dur s’est allégé d’un poids de 50 GIGAAAAA ! Quelle idée de transporter toute cette inutilité ! Merci JL35 | |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Suppression des vieux fichiers Jeu 19 Fév 2015 - 19:49 | |
| C'est une idée... prudente. Et j'espère que tu n'as rien perdu d'irrémédiable ! le mieux c'est de faire une sauvegarde régulière de ses fichiers vitaux, ce que j'essaie de faire...
Pour moi j'ai intégré cette fonction dans mon interface générale Panoramic, et c'est à l'appel de la sub que j'affiche l'avertissement et que je demande confirmation.
Je vois que tu as sorti la fonction DateSerial dans une sub à part... alors que j'ai fait l'inverse ! c'est un point de vue, mais personnellement je n'aime pas trop une sub qui appelle une autre sub, elle devient moins indépendante... mais bon, il y a diverses façons de voir les choses et de procéder, c'est ce qui fait le charme de la programmation ! | |
|
| |
Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Suppression des vieux fichiers Jeu 19 Fév 2015 - 20:10 | |
| Ho ! Ho ! ATTENTION DANGER ! Imaginez que quelqu'un soit assez stupide pour faire sf$ = "*.*" pour le disque C: Il aurait peut-être été judicieux d'afficher les fichiers dans une liste pour les sélectionner. En tous cas, pour ceux qui ne savent pas de quoi il s'agit, ne faites pas l'essai de ces 2 Sub(s) sans avoir compris ce que vous faites.
Cette sub est très utile, mais dangereuse pour ceux qui cliquent avant de réfléchir. BON, çà ne sera pas par manque d'avertissement de ma part et des auteurs. A+ | |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Suppression des vieux fichiers Jeu 19 Fév 2015 - 20:23 | |
| D'accord Jean Claude, c'est un outil, mais on s'adresse ici à des programmeurs qui j'espère sont bien conscients de ce qu'ils font, ce n'est pas un bouton à mettre à la disposition d'un utilisateur lambda. Et il est bien évident que chacun doit être lucide et prendre ses précautions, et éventuellement mettre les garde-fous qui lui semblent nécessaires. | |
|
| |
Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Suppression des vieux fichiers Jeu 19 Fév 2015 - 20:34 | |
| On est bien d'accord.
Mais je pense qu'un petit message confirmation_yes_no("") d'avertissement indiquant, le nombre de jours d'ancienneté et l’extension des fichiers qui vont être supprimés, serait une sécurité. Personne ne pourrait, ainsi, te reprocher quoique ce soit.
A+ | |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Suppression des vieux fichiers Jeu 19 Fév 2015 - 20:46 | |
| Chacun est libre de mettre les avertissements qu'il veut, où il veut ! En ce qui me concerne je l'ai mis dans le programme principal avant l'appel de la sub. C'est un outil qui fait du nettoyage, je ne ferai l'injure à personne ici de penser qu'il pourrait être utilisé à la légère ! Et rassure-toi, je ne me sentirai pas du tout responsable si quelqu'un efface son disque dur en l'utilisant ! Comme si quelqu'un qui se coupe avec un couteau allait se plaindre au marchand que son couteau est trop tranchant. | |
|
| |
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Suppression des vieux fichiers Jeu 19 Fév 2015 - 21:29 | |
| Ca pourra être intégré dans l'interface d'Ygeronimi dans les options pour supprimer les veilles sauvegardes en .BAK | |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 19 Fév 2015 - 21:45 | |
| Non . Les sauvegardes *.Bak sont propres à Panoramic_Editor. Pour l' instant, PPE ne propose pas de sauvegarde automatique. Cela viendra un jour mais pas pour l' instant. Là, je vais attaquer l' aide *.chm avant de proposer d' autres outils ou gadgets... | |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 19 Fév 2015 - 21:50 | |
| En plus, pour les fichiers *.Bak, le problème de date ne se pose pas. Un fichier *.Bak est attaché à un fichier source et il n' y en a qu' un par fichier source. Ce fichier *.Bak est mis à jour par Panoramic_Editor à chaque sauvegarde automatique. Donc...Inutile de le supprimer, sauf si le programme est terminé. | |
|
| |
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Suppression des vieux fichiers Jeu 19 Fév 2015 - 21:54 | |
| Tu as raison Ce procédé n'est pas forcément utile pour ton programme mais il peut l'être dans d'autres | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Suppression des vieux fichiers Jeu 19 Fév 2015 - 22:30 | |
| - Jean Claude a écrit:
- Imaginez que quelqu'un soit assez stupide pour faire sf$ = "*.*" pour le disque C:
Juste avant l’instruction EXECUTE_WAIT "Cmd.exe /c DIR "+rep$+suf$+" | clip": CLIPBOARD_PASTE mm%Ajoutez - Code:
-
if upper$(right$(suf$,3)) <> "BAK" t$ = "Vous êtes bourré ou quoi !"+chr$(13) t$ = t$ + "Moi, je suis prudent : je ne supprime que les .bak"+chr$(13) t$ = t$ + " JE REFUSE DE VOUS OBEIR MAITRE !!!!" message t$ : exit_sub end_if
Même si on est ce que le message indique, on se trouve malgré tout à l’abri ! A mois que … | |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Suppression des vieux fichiers Jeu 19 Fév 2015 - 22:46 | |
| - ygeronimi a écrit:
- Ce fichier *.Bak est mis à jour par Panoramic_Editor à chaque sauvegarde automatique.
Donc...Inutile de le supprimer, sauf si le programme est terminé. Eh bien justement ! Lorsque le programme est terminé (ça finit presque toujours souvent par arriver) on ne pense pas forcément (ou on préfère attendre un peu) à supprimer le fichier .bak généré automatiquement par l'éditeur. Et après on n'y pense plus. Et au bout d'un moment ça fait une belle accumulation de .bak inutiles (j'en avais dans les 80), alors il faut bien finir par les supprimer, non ? sauf les derniers qui peuvent encore servir... d'où la suppression sélective. - Jean Claude a écrit:
- Imaginez que quelqu'un soit assez stupide pour faire sf$ = "*.*" pour le disque C:
Si quelqu'un est assez stupide pour faire ça... y'a plus qu'à tirer l'échelle | |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 19 Fév 2015 - 23:57 | |
| @ Papydall, Ton message pourrait être mal pris par quelqu' un qui l' est... | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Suppression des vieux fichiers Ven 20 Fév 2015 - 1:44 | |
| Dans ce cas là , ça sera bien fait pour lui ! | |
|
| |
Contenu sponsorisé
| Sujet: Re: Suppression des vieux fichiers | |
| |
|
| |
| Suppression des vieux fichiers | |
|