Se connecter / S'enregistrer
Votre question

[BATCH]comparer la taille d'un dossier avec celle d'un volume

Tags :
  • Script
  • Programmation
Dernière réponse : dans Programmation
17 Juin 2007 14:38:27

Bonjour,

Comment faire un script batch pour comparer la taille disponible de mon lecteur F:\ avec la taille totale de mon répertoire e:\toto\tata\*.*
et si la taille de mon répertoire e:\toto\tata\*.* est supérieure à l'espace disponible sur mon lecteur F:\ alors supprimer automatiquement
les plus vieux dossiers de F:\ ===> F:\01.01.2007 à 10h50\toto\tata\*.*
F:\02.01.2007 à 10h50\toto\tata\*.*
F:\04.01.2007 à 10h55\toto\tata\*.*
F:\05.01.2007 à 10h55\toto\tata\*.*
F:\01.02.2007 à 10h50\toto\tata\*.*
F:\02.02.2007 à 10h50\toto\tata\*.*
et ne conserver que les 2 plus récents de F:\ ===> F:\01.02.2007 à 10h50\toto\tata\*.*
F:\02.02.2007 à 10h50\toto\tata\*.*

J'ai tenté avec les unixtools et rkt(s) des Windows mais je me suis perdu dans les syntaxes des uns et autres surtout quand il faut faire parfois la différence en ligne de commande du script batch lui-même...

Par avance merci de votre aide. :jap: 

Autres pages sur : batch comparer taille dossier volume

7 Juillet 2007 13:59:23

Bonjour à tous
Je vous livre mes premiers tests mais j'ai encore besoin de vous

1)premiere partie OK (le "du" fait partie des unixtools pour windows)
for /f "usebackq tokens=1" %%i in (`du -cb e:\toto\tata ^|^ findstr /C:"total"`) do set var1=%%i
FOR /F "usebackq tokens=3" %%F IN (`DIR /-C F: ^|^ FIND /I "octets libres"`) DO SET VAR2=%%F
IF %VAR2% LSS %VAR1% echo le volume F: de %VAR2% ko est trop petit pour le backup
IF %VAR1% LSS %VAR2% echo le volume F: de %VAR2% ko est suffisant pour le backup

2)deuxième partie NOK (le "rmdir /s /q" fait la même chose que le "echo")
C:\>dir /b /o-d "c:\backup\" | gawk " NR<2 ( \"rmdir /S /Q \"$0 )
svg 10.06.2007 - 13h41
svg 10.06.2007 - 13h40

C:\>dir /b /o-d "c:\backup\"
svg 10.06.2007 - 13h41
svg 10.06.2007 - 13h40
svg 10.06.2007 - 13h38
svg 09.06.2007 - 11h40
svg 09.06.2007 - 11h39
En dehors du contexte ci-dessus, en ligne de commande ou dans un autre batch le "rmdir" fonctionne parfaitement

Je cherche encore et encore mais je ne trouve pas alors je suis preneur de toutes vos solutions et GRAND MERCI de votre aide
a b L Programmation
7 Juillet 2007 15:59:18

probablement l'utilisation de rmdir dans gawk (qui je suppose est aussi un unixtools ;)  ).
J'imagine que gawk attend un programme des unixtools, ou un programme ordinaire. Je crois que rmdir n'est pas un programme, mais juste une commande batch. C'est peut-être pour ça.
J'imagine que dans tes unixtools tu as bien un "rm -r", non ? :) 
10 Juillet 2007 00:41:48

Bonjour

Oui le "gawk" fait partie de l'unixtools.
Il y a aussi un "rm" et un "rmdir" qui se comportent eux aussi comme la commande "echo" dans mon contexte.

Même si j'ai finalement résolu mon problème par un autre moyen, j'aurai bien aimé savoir le pourquoi du bug.

Au final, pour la phase de test voici ma solution pour la partie 1 et 2 ensemble :
for /f "usebackq tokens=1" %%k in (`du -cb e:\toto\tata ^|^ findstr /C:"total"`) do set VAR1=%%k
for /f "usebackq tokens=3" %%l in (`DIR /-C F: ^|^ FIND /I "octets libres"`) do set VAR2=%%l
if %%k lss %%l delage32 "F:\*.*" 2 /created /recurse /rd

delage32 a été récupéré sur le site http://home.mnet-online.de/horst.muc/win.htm
Je ne fais pas de pub mais les tools sont gratuits et plutôt de bonne qualité...

Grand Merci à tous les forums et/ou mes amis informaticiens chez qui j'ai pu prendre toutes les infos nécessaires.
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS