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

comparer la taille d'un dossier avec celle d'un volume [BATCH] - Shell/Batch - Programmation

Marsh Posté le 17-06-2007 à 00:14:06    

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:  

Reply

Marsh Posté le 17-06-2007 à 00:14:06   

Reply

Marsh Posté le 07-07-2007 à 14:25:37    

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

Reply

Marsh Posté le 10-07-2007 à 01:13:26    

Bonjour
 
Même si j'ai finalement résolu mon problème par un autre moyen, j'aurai bien aimé savoir le pourquoi du bug avec le "rmdir"
 
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  
 
Grand Merci à tous les forums où j'ai pioché mes infos.

Reply

Marsh Posté le 10-07-2007 à 04:56:39    

Probleme d'espaces dans les chemins ?

Reply

Marsh Posté le 10-07-2007 à 15:04:07    

ouka a écrit :

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


dir /b /o-d "c:\backup\" | gawk " NR<2 { system(\"rmdir /S /Q \" $0 ) }"

Reply

Sujets relatifs:

Leave a Replay

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