[Batch] Optimisation de mon scripte

Optimisation de mon scripte [Batch] - Shell/Batch - Programmation

Marsh Posté le 20-01-2011 à 13:43:39    

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:

Reply

Marsh Posté le 20-01-2011 à 13:43:39   

Reply

Marsh Posté le 26-01-2011 à 14:25:20    

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 !
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed