Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1423 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°1575923
ouka
Posté le 17-06-2007 à 00:14:06  profilanswer
 

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:  

mood
Publicité
Posté le 17-06-2007 à 00:14:06  profilanswer
 

n°1583540
ouka
Posté le 07-07-2007 à 14:25:37  profilanswer
 

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

n°1584321
ouka
Posté le 10-07-2007 à 01:13:26  profilanswer
 

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.

n°1584333
wackevat
Posté le 10-07-2007 à 04:56:39  profilanswer
 

Probleme d'espaces dans les chemins ?

n°1584643
aigles
Posté le 10-07-2007 à 15:04:07  profilanswer
 

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 ) }"


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

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

 

Sujets relatifs
[DELPHI]Récupérer un dossier d'un SaveDialogDescription de ce batch
Variable d'environnement [batch] Copier et dater du clic droitComparer deux flottants
[Batch] [Résolu]Analyse d'une chaine de caractères + redimensionnement[Resolu] taille de base de données oracle
taille player vidéocomment créer un dossier ?
taille player vidéo[résolu]Calcul avec Batch
Plus de sujets relatifs à : [BATCH]comparer la taille d'un dossier avec celle d'un volume


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR