IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

[Batch] Compteur du nombre de caractères, ligne par ligne


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 19
    Par défaut [Batch] Compteur du nombre de caractères, ligne par ligne
    Bonjour,

    Je rencontre actuellement un petit problème, en effet je cherche à réaliser un batch qui me permettrait d'analyser mes fichiers de log.
    J'ai actuellement un problème, certaines lignes de mes logs sont anormalement longue (environ + de 3000 caractères) et je souhaiterai créer un batch qui m'analyse ligne par ligne mon fichier .log et qui me compte si le nombre de caractère est supérieur à 3000. Dans le cas ou la ligne serait > à 3000, je souhaiterai supprimer cette ligne.

    Est-ce possible d'après-vous ?

    N'ayant pas de grande compétence en DOS, je me demandai si vous pouviez m'aider. Vous en remerciant par avance.

    Cordialement

    DevInet

  2. #2
    Membre éprouvé
    Avatar de koKoTis
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 438
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 438
    Par défaut
    normalement ceci devrai fonctionner mais ca me renvoi une erreur chez moi, test chez toi pour voir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    @echo off & color 0A
    
    
    setlocal enabledelayedexpansion 
    
    for /f "delims=" %%i in ('type fichier.txt') do ( 
    
           echo %%i> line.txt
           set vrLine=%%i
            for /r %%j in (line.txt) do ( 
                           set VrCompt=%%~zj
                           set /a VrCompt-=2
                           if !VrCompt! gtr 3000 switch "fichier.txt" "!vrLine!" ""
                )
           del line.txt
    
      )
    
    endlocal
    
    
    pause>nul
    Pour supprimer les liigne trop longue j'utilise la commande switch.exe, mais il faut la télécharger, regarde dans la faq, la derniere question réponse, il y a un lien de téléchargement

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 19
    Par défaut
    Merci beaucoup de ton aide et, d'après mes premiers test, cela fonctionne.

    Par contre, je n'ai pas vu de code retour d'erreur...

    Ayant observé le fonctionnement, j'aurai une modification à te demander, serai-ce possible, plutôt que de supprimer les ligne > a 3000 caractères, de les déplacer dans un autre fichier texte ?

    Merci encore

    Cordialement

    DevInet

  4. #4
    Membre éprouvé
    Avatar de koKoTis
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 438
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 438
    Par défaut
    tu me dit que le code fonctionne, donc les ligne trops longue sont bien supprimer ?
    si oui c'est normale que tu n'a pas d'erreur, c'est que le code fonctionne, il dait y avoir un probléme de droit sur mon pc, c'est pour cela que j'ai une erreur.

  5. #5
    Membre éprouvé
    Avatar de koKoTis
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 438
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 438
    Par défaut
    Voici la modif:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    @echo off & color 0A
    
    
    setlocal enabledelayedexpansion 
    
    for /f "delims=" %%i in ('type fichier.txt') do ( 
    
           echo %%i> line.txt
           set vrLine=%%i
            for /r %%j in (line.txt) do ( 
                           set VrCompt=%%~zj
                           set /a VrCompt-=2
                           if !VrCompt! gtr 3000 ( 
                                     switch "fichier.txt" "!vrLine!" ""
                                     echo !vrLine!>> linelongue.txt
                              )
                           
                )
           del line.txt
    
      )
    
    endlocal
    
    
    pause>nul

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 19
    Par défaut
    Merci !

    J'ai testé ce dernier car en fait, il correspond mieux a mon besoin.
    Il fonctionne bien, par contre, lors de l'analyse, les lignes > à 3000 caractères sont bien détéctées et copiées dans le fichier "linelongue.txt" mais ne sont pas remplacée dans le fichier source par un "".

    Est-ce normal ?

    Merci d'avance

    DevInet

  7. #7
    Membre éprouvé
    Avatar de koKoTis
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 438
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 438
    Par défaut
    Par contre montre moi se que tu a fait en batch STP

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [batch] - Compter le nombre de caractères d'une chaîne
    Par koKoTis dans le forum Scripts/Batch
    Réponses: 13
    Dernier message: 19/06/2025, 23h01
  2. [XL-2003] Export *.CSV avec nombre de caractère fixe par ligne
    Par IronBibs dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 04/09/2011, 02h55
  3. Compter le nombre d'occurence d'un caractère donné, par ligne du fichier
    Par Bktero dans le forum Shell et commandes GNU
    Réponses: 15
    Dernier message: 23/03/2011, 15h47
  4. Réponses: 3
    Dernier message: 16/10/2007, 20h45
  5. nombre de caractères affichés par camllight
    Par Moi_Emilie dans le forum Caml
    Réponses: 5
    Dernier message: 17/04/2007, 22h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo