purge d'un répertoire sur critére de date

purge d'un répertoire sur critére de date - Shell/Batch - Programmation

Marsh Posté le 21-10-2004 à 14:53:41    

Bonjour à tous,
 
J'ai un répertoire nommé Echange (partagé sous win 2000 en réseau) qui sert pour le stockage temporaire de fichiers (ou de répertoires)
Je souhaite supprimer automatiquement les fichiers vieux de plus de N jours, y compris dans les sous-répertoires.
 
- J'ai essayé l'utilitaire deldate mais celui ne semble pas récursif et n'accepte en tout cas pas les espaces.
 
- J'ai tenté un mix de deldate avec des commandes batch mais je bloque encore sur les noms de répertoires avec espace.
 
Connaissez vous un moyen (sans achat de soft type delenda) pour réaliser cette opération ?
 
Sinon, comment supprimer les espaces dans les noms de répertoires créés par les utilisateurs ?
 
Merci d'avance

Reply

Marsh Posté le 21-10-2004 à 14:53:41   

Reply

Marsh Posté le 21-10-2004 à 15:53:29    

voila une solution qui marche :
 

Code :
  1. @echo off
  2. set N=4
  3. for /F "usebackq tokens=1-4 delims=/ " %%i in (`echo %date%`) do (
  4. set  /A currentdate=%%l%%k%%j
  5. )
  6. set /A datetodel=%currentdate%-%N%
  7. for  /R %CD% %%i in (*.*) do (
  8. set file="%%i"
  9. set filedate=%%~ti
  10. call :PROCESSDEL
  11. )
  12. goto EXIT
  13. :PROCESSDEL
  14. for /F "usebackq tokens=1-4 delims=/ " %%i in (`echo %filedate%`) do (
  15. set /A filedate2=20%%k%%j%%i
  16. if %filedate2% LEQ %datetodel% echo je delete le fichier %file%
  17. )
  18. :EXIT


 
remplace juste la ligne qui contient ton N
et celle ou tu vas deleter le fichier (ici je fais juste un echo)


Message édité par Arrakeen le 21-10-2004 à 15:53:45
Reply

Marsh Posté le 21-10-2004 à 16:08:32    

Je vais tâcher de comprendre comment ça marche...
 
Merci pour le coup de main.

Reply

Marsh Posté le 22-10-2004 à 09:23:29    

Arrakeen a écrit :


remplace juste la ligne qui contient ton N
et celle ou tu vas deleter le fichier (ici je fais juste un echo)


 
Salut Arrakeen, j'ai encore besoin de tes lumières...
 
j'ai compris le fonctionnement dans l'ensemble, mais je ne pige pas les lignes 12 et 13 :
 
for  /R %CD% %%i in (*.*)
 
Comment définir le chemin de mon répertoire à traiter (c:\Echange)pour lancer le script depuis un autre endroit que le répertoire courant ?
 
C'est quoi %CD% ?
 
Merci
 
 
 
 

Reply

Marsh Posté le 22-10-2004 à 10:08:07    

iop iop,
 
%CD% est une variable prédéfiie qui désigne le repertoire courant d'ou tu lances le .bat.
tu peux evidemment mettre le repertoire que tu veux :
 

Code :
  1. for  /R C:\Echange %%i in (*.*) do (


 
ligne 13 sinon ? set file="%%i" ?
 
bah je recupere le nom du fichier que je met entre guillemets
pour que les noms de repertoire et/ou de fichiers contenant des espaces
ne soit pas un probleme...
 
++
 
Arrakeen

Reply

Marsh Posté le 22-10-2004 à 16:24:27    

Merci pour tes précisions. J'ai eu grâce à toi une bonne base de travail.
 
J'ai du batailler un peu pour arriver à un résultat.
La ligne 25 ne voulait pas s'exécuter.
 
J'ai fini par trouver qu'il fallait mettre "%filedate2%" et "%datetodel%" entre guillemets.
 
Sinon, à l'occase je chercherai le moyen de s'affranchir du changement de mois.
 
En effet si je met N=7 et que j'exécute (par mégarde bien sûr) le script le 02 10 2004, j'obtiens datedel=20040995 au lieu de 20040925...
 
A une prochaine, merci encore.

Reply

Sujets relatifs:

Leave a Replay

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