Surveillance taille d'un fichier puis rotation

Résolu/Fermé
Ka-El Messages postés 260 Date d'inscription lundi 28 novembre 2011 Statut Membre Dernière intervention 7 août 2020 - Modifié le 13 févr. 2020 à 10:46
Ka-El Messages postés 260 Date d'inscription lundi 28 novembre 2011 Statut Membre Dernière intervention 7 août 2020 - 13 févr. 2020 à 16:08
Bonjour,
Je suis actuellement en train de travailler sur un script qui génère une trace de travail.
Cette log peut aléatoirement prendre des tailles importantes en fonction de l'activité de la plateforme sur laquelle le script est installé.
Pour prévenir tous éventuels problème de surcharge de disque, je suis donc contraint de surveiller la taille de cette log.
Je suis donc à la recherche d'un bout de code (je n'ai rien trouvé d'intéressant sur le net), qui va archiver la log quand celle-ci va atteindre une taille de 1 Mo (par exemple).
Voici un peu l'idée exprimée très schématiquement:
set ficlog=fichier.log
If %ficlog% > 1 Mo then
del %ficlog%.old
mv %ficlog% %ficlog%.old 
zip %ficlog%.old

Merci d'avance pour votre aide :-)
Ka-El

4 réponses

dubcek Messages postés 18581 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 30 janvier 2023 5 583
Modifié le 13 févr. 2020 à 10:47
hello
la taille du fichier en octet est donnée par %~zX
C:> for %a  in (??.bat) do @echo %~za %a
30123 aa.bat
31805 bb.bat
28107 cc.bat
621 dd.bat
1675 lo.bat
149 sh.bat
74 z1.bat
27 z2.bat
0
Ka-El Messages postés 260 Date d'inscription lundi 28 novembre 2011 Statut Membre Dernière intervention 7 août 2020
13 févr. 2020 à 11:38
Salut Dubcek,
En fait, je recherche un morceau de code qui va contrôler la taille d'un fichier log.
Quand celle-ci atteint 1 mo, alors le script doit archiver le fichier (en supprimant préalablement l'ancien) et puis le compresse.
Voici l'idée:
set ficlog=fichier.log
If %ficlog% > 1 Mo then
del %ficlog%.old
mv %ficlog% %ficlog%.old
zip %ficlog%.old
0
dubcek Messages postés 18581 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 30 janvier 2023 5 583
13 févr. 2020 à 13:06
je n'ai pas testé, essayer
set ficlog=fichier.log
for %%a in (%ficlog%) do (
  If %%~za GTR 1000000 (
   del %ficlog%.old
   mv %%a %ficlog%.old
   zip %ficlog%.old
   )
)
0
Ka-El Messages postés 260 Date d'inscription lundi 28 novembre 2011 Statut Membre Dernière intervention 7 août 2020
13 févr. 2020 à 13:26
Tu crois que l'on est obligé de faire une boucle ?
Ce serait peut être un peu moins lourd avec un "type" sur le fichier log ?
0
dubcek Messages postés 18581 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 30 janvier 2023 5 583
13 févr. 2020 à 15:25
il faut une commande for pour récupérer la taille du fichier dans %%~zX
type pour connaitre la taille du fichier ???????? je vois pas
0
Ka-El Messages postés 260 Date d'inscription lundi 28 novembre 2011 Statut Membre Dernière intervention 7 août 2020
13 févr. 2020 à 16:08
oui tu as raison, c'est effectivement n'importe quoi...
En tout cas, ta proposition fonctionne bien.
Merci beaucoup pour ton aide ! :-)
0