Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2609 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [Batch] Optimisation de mon scripte

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Batch] Optimisation de mon scripte

n°2050441
kinder515
Posté le 20-01-2011 à 13:43:39  profilanswer
 

Bonjour, alors voila mon problème, je suis en stage et on ma demande de faire un scripte qui permet de lister tout les fichiers présent dans le disque de sauvegarde, et d'ensuite faire la liste des fichiers qui ont une date de modification supérieur à 5 ans.
J'ai pas vraiment eu de problème pour le faire, c'est toujours perfectible mais sa marche.
 

Code :
  1. @echo off
  2. set dateJ=%date:~6,4%%date:~3,2%%date:~0,2%
  3. set /A DateL=%DateJ% - 50000
  4. echo %DateL% correspond a la date limite choisi (AAAAMMJJ)
  5. dir /s /b "\Users\Test\tata" >> \Users\Test\list.txt
  6. find "." \Users\Test\list.txt >> \Users\Test\fichier.txt
  7. FOR /f "skip=2" %%1 IN (C:\Users\Test\fichier.txt) DO (
  8. echo %%1 >> \Users\Test\test.txt
  9. dir /TW %%1 | find "/" >> \Users\Test\rdat.txt
  10.         FOR /F "tokens=1,2,3 delims= " %%i IN (C:\Users\Test\rdat.txt) DO (
  11.       echo %%i >> \Users\Test\test.txt
  12.       set DateFic=%%i
  13.       set DateFicM=%DateFic:~6,4%%DateFic:~3,2%%DateFic:~0,2%
  14.       echo %DateFicM% >> \Users\Test\allo.txt
  15.       echo %DateFicM%
  16.       IF %DateL% LSS %DateFicM% ( echo Aucune suppression a faire, la date limite n'a pas ete atteinte )
  17.       IF %DateL% GTR %DateFicM% ( dir /s /b %%1 >> \User\Test\supr.txt )
  18. )
  19. )
  20. del C:\Users\Richard\rdat.txt


 
Voila mon code, alors tout simplement, le scripte va lister tout ce qui ce trouve dans mon répertoire tata, et pour ne garde que les fichiers j'utilise Find avec "." et tout est envoyé dans fichier.txt.
 
L'objectif des boucle, est d'obtenir un premier fichier test.txt sous cette forme :
C:\Users\Test\tata\toto.txt
18/01/2011
C:\Users\Test\tata\louli\plop.txt
18/01/2011
 
C'est un fichier qui apparaitre pour l'utilisateur qui lui permet de voir le fichier avec sa date de modification, j'aurais préféré avoir la date sur la même ligne mais j'ai pas réussi.
 
Ensuite dans rdat.txt je stock juste la date dedans, pour pouvoir en changer le format pour passer de JJ/MM/AAAA à AAAAMMJJ, pour etre ensuite compare à la date du jour comme un nombre.
Pour vérifier que ça marche je stock les dates dans allo.txt.
 
Ensuite si la date de modification date de 5 ans, je stock le path du fichier dans un .txt qui sera imprimable (ça j'ai pas encore fait) sinon j'affiche un message.
 
La majorité des echos sont juste la pour moi, et vérifier le déroulement du scripte.
 
Alors maintenant que j'ai explique le principe, je vais vous parler de mes probleme
 
Bon le premier est simple j'ai moi meme compris la cause mais j'ai pas réussi à le résoudre. Normalement le fichier test.txt devrais apparaitre comme je vous l'ai montre cepdant lui il apparais comme ça :
 
C:\Users\Test\tata\toto.txt
18/01/2011
C:\Users\Test\tata\louli\plop.txt
18/01/2011
18/01/2011
 
Il me rajoute une date alors qu'il devrais pas. Après ce problème ce répercute plus loin, lorsque je fait la liste des fichiers pouvant être supprimé le dernière fichier est écris deux fois d'affilé.
 
Et mon second probleme est que le scripte ne fonctionne pas du premier coup, je doit l'executer trois fois pour qu'il marche.
Au premier essai il me dit que les echos sont désactive, au second essai, au lieu de m'afficher mes dates de modification sous le nouveau format il affiche :
%DateFic:~6,4%%DateFic:~3,2%%DateFic:~0,2%
 
Et au 3ème coups ça marche, dc je comprend pas, parce que je ne fait aucune modification dans mon scripte.
 
Je m'excuse d'avance de vous afficher un pavé si énorme , mais j'ai préféré montrer tout mon scripte tout de suite pour que vous voyez bien comment c'est construit .
Je suis ouvert à toutes vos remarques et je vous remercie d'avance pour votre aide.  
 :jap:

mood
Publicité
Posté le 20-01-2011 à 13:43:39  profilanswer
 

n°2052022
Xspawn_Lpc
Posté le 26-01-2011 à 14:25:20  profilanswer
 

Comme tu l'indiques c'est un pavé, infame à relire et débuger/optimiser/...
 
Non pas que tu l'ais mal écrit ;) , mais parceque tu es obliger de bidouiller des lignes de code pour contourner les limitations du batch.
 
Alors qu'accéder à la date d'un fichier s'obtient facilement dans un langage + évolué (un script vbs par exemple).
 
L'as tu envisagé ?


---------------
Quand on aime on ne compte pas. Quel Dilemme lorsque l'on aime compter !

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [Batch] Optimisation de mon scripte

 

Sujets relatifs
Récupérer un pipe \\.\pipe\ via batch, autre propositions bienvenuesShell/Batch grep + sed
Rech programme pour créer automatiquement un dossier par fichier?Optimisation ecriture dans BDD à partir d'un table HTML [résolu]
optimisation de connexion php mysqlParcourir fichiers répertoire + modif en batch
[batch windows] Ecrire sur la même ligne ?Optimisation interface et nombre de fichiers
Batch : Compteur dans une boucle for[Batch] Déplacement massif de fichiers
Plus de sujets relatifs à : [Batch] Optimisation de mon scripte


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR