Tom's Guide > Forum > Programmation > [BATCH]comparer la taille d'un dossier avec celle d'un volume

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

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

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

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:

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

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


Message édité par oukat le 07-07-2007 à 14:01:24
Répondre à oukat

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

------------------------------ 6800A007B81300CD10B00131C989CF26880541
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky

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.


Message édité par oukat le 10-07-2007 à 00:48:06
Répondre à oukat
Tom's Guide > Forum > Programmation > [BATCH]comparer la taille d'un dossier avec celle d'un volume
Aller à :

Il y a 692 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens