Se connecter avec
S'enregistrer | Connectez-vous

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

Dernière réponse : dans Programmation

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: 

Lassé par la pub ? Créez un compte

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
Expert Programmation

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 ? :) 

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.
Lassé par la pub ? Créez un compte
Tom's guide dans le monde