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 :

Script Traitement Lignes d'un fichier


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 8
    Par défaut Script Traitement Lignes d'un fichier
    Bonjour à tous,

    Tout d'abord je vous souhaite une bonne année !

    Voilà , je suis très débutant dans le scripting et je me heurt déjà à un problème (surement de compréhention...).

    J'ai un fichier, généré par une application, contenant plusieurs lignes, chacunes ayant la même syntaxe :

    [NOM_DATA] [Valeur1]/[Valeur2] = [Résultat en %]

    Je souhaite rédiger un script sur lequel je puisse entrer un "NOM_DATA" en argument pour obtenir le résultat associé.

    Je n'ai pas la main sur le format généré par l'application...

    Mais je n'ai aucune idée par où commencer. Actuellement j'arrive à afficher l'ensemble des lignes et j'essai d'extraire les lignes une par une pour pouvoir couper les données importante "NOM_DATA" et "Résultat" pour les mettre à leur tour dans une variable, qui seront appelé via la saisie d'argument.

    Je suis rendu à créer une variable pour afficher les lignes (sans la variable cela donne le même résultat...). Je ne sais pas comment créer une nouvelle variable à chaque ligne via une incrémentation...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    @echo off
    setlocal enabledelayedexpansion
    for /f "delims=" %%i in ('type test.txt') do (
    set var=%%i
    echo !var!
    )
    --> Ceci me retourne les différentes lignes.

    De plus j'ai réussi à extraire juste le "NOM_DATA" de chaque ligne mais je ne sais pas comment attribuer ces résultats dans une variable réutilisable après(eh oui les boucles me posent pas mal de problème de compréhension de traitement) ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for /F %%a in (test.txt) do echo %%a

    Je ne sais pas si j'ai été assez clair...

    N'hésitez pas si vous avez la moindre question ou remarque sur la méthode, je suis preneur

    Cordialement.

    RRICHARD

  2. #2
    Membre Expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Par défaut
    Salut,

    Je t'ai fait un exemple :

    Toto.log :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Temp1 30/10 = 3
    Temp2 40/10 = 4
    test.bat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    @echo off
    
    for /f "tokens=1,3,4 delims= " %%a in ('type toto.log') do set %%a%%b%%c
    
    echo %Temp1%
    echo %Temp2%
    On cree la variable qui correspond au [NOM_DATA] avec comme valeur le [Résultat], juste en jouant avec les Tokens pour récuperer le bon élément.


  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 8
    Par défaut
    Bonjour,

    Merci beaucoup pour la réponse. J'obtiens bien le résultat comme valeur.

    Pour vérifier que j'ai bien compris la commande, est-ce que tu peux me confirmer ou non ceci ?

    On divise les lignes en trois parties (token) délimitées par le délimiteur "espace". Le contenu est envoyé dans des variables ayant le même nom (?).

    Mais je ne vois pas comment la création de trois variables temporaire (a, b, c) peut être associé aux différentes parties et que le fait d'afficher le contenu de la variable "Temp" donne le résultat de la ligne ?...

    Merci d'avance pour ta réponse, tu m'as déjà beaucoup aidé.

    Cdt

  4. #4
    Membre Expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Par défaut
    Effectivement avec les tokens on récupère les parties de la ligne qui nous intèresse.

    En fait j'ai également récuperer le "=" dans le %%b ce qui n'est pas très utiles.

    On peut faire comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for /f "tokens=1,4 delims= " %%a in ('type toto.log') do set %%a=%%b
    si tu remplace le SET par ECHO de cette manière tu comprendra mieux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for /f "tokens=1,4 delims= " %%a in ('type toto.log') do echo %%a = %%b
    En fait on cree la structure de définition d'une variable d'environnement :

    au travers des valeurs récuperées sur chacune de tes lignes :

    qui correspond en fait à :

    etc... pour chaque ligne.

    Donc chaque variable créer aura comme nom ton [NOM_DATA] (%%a = token 1) et comme valeur [Resultat] (%%b = token 4)

    Voilà !

    J'éspère que c'est compréhensible...


  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 8
    Par défaut
    Merciiii ! Là je comprends beaucoup le mieux le fonctionnement du code. Tu viens de m'éclairer sur plusieurs points et j'ai plusieurs idées en tête grâce à ça.

    Encore merci pour ton aide.

Discussions similaires

  1. Réponses: 3
    Dernier message: 12/10/2008, 17h41
  2. Script de suppression des lignes d'un fichier Excel
    Par ninsekh dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 09/10/2008, 12h44
  3. [PERL]: Help script traitement fichier txt tabulaire
    Par Piccolupo13 dans le forum Langage
    Réponses: 2
    Dernier message: 21/08/2007, 20h37
  4. Réponses: 1
    Dernier message: 09/02/2007, 22h51
  5. traitement ligne de fichier
    Par sos dans le forum Langage
    Réponses: 2
    Dernier message: 30/01/2007, 07h29

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