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 :

Boucle s'arrêtant à un caractère précis [Batch]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 11
    Par défaut Boucle s'arrêtant à un caractère précis
    Bonjour, alors je vous explique mon problème:
    j'ai un fichier a.txt
    a=
    b=
    c=
    d=
    e=
    f=
    g=
    je veux lire chaque ligne, trouver la ligne qui contient un " e " et modifier la ligne suivante pour écrire "test".
    Pour cela j'utilise ce code:
    for /f "tokens=1 delims=:" %%i in ('type a.txt ^|findstr /n /c:"e"') do set vrNumbLigneN=%%i& set /a vrNumbLigneN+=1
    for /f "tokens=1,* delims=:" %%i in ('findstr /n /r . a.txt') do set vrNumbLigne=%%i& set vrLign=%%j& call :trait
    goto fin
    :trait
    if "%vrNumbLigne%"=="%vrNumbLigneN%" set vrLign=test
    echo %vrLign%>> b.txt
    goto :eof
    :fin
    jusque là tout fonctionne, je me retrouve avec en sortie le fichier voulu: b.txt
    a=
    b=
    c=
    d=
    e=
    test
    g=
    mais je me suis rendu compte que si je mettai un caractère " | " (altgr+6) cela arrêtait la boucle à la ligne précedant le caractère, exemple:
    a.txt
    a=
    b=
    c=|
    d=|
    e=
    f=
    g=
    je me retrouve avec b.txt
    a=
    b=
    alors j'aimerai savoir comment faire pour passer outre les | afin de continuer la boucle ou s'il y a une autre façon de modifier une ligne dans sa totalité.
    Si vous n'avez pas bien compris je peux répondre à vos questions.

    Merci d'avance.

  2. #2
    Membre Expert
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Par défaut
    Salut,

    essayes comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    for /f "tokens=1 delims=:" %%i in ('type a.txt ^|findstr /n /c:"e"') do set vrNumbLigneN=%%i& set /a vrNumbLigneN+=1
    for /f "tokens=1,* delims=:" %%i in ('findstr /n /r . a.txt') do set vrNumbLigne=%%i& set vrLign="%%j"& call :trait
    goto fin
    :trait
    set vrLign=%vrLign:|=^|%
    if "%vrNumbLigne%"=="%vrNumbLigneN%" set vrLign=test
    echo %vrLign:"=%>> b.txt
    goto :eof
    :fin
    mais attention aux caractères réservés

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 11
    Par défaut
    Ooooo Super merci beaucoup ça fonctionne impeccable
    Tu peux m'expliquer la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set vrLign=%vrLign:|=^|%
    Et les caractères reservés, tu veux parler du |, il y en a d'autres ?

  4. #4
    Membre Expert
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Par défaut
    pour la première question: SET/?
    pour la seconde question: Oui, il y en a d'autres..les ^ < > ! & ..etc

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 11
    Par défaut
    Je n'ai pas compris la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set vrLign=%vrLign:|=^|%
    en gros ça permet de reconnaitre le caractère et de continuer la boucle ?
    Donc pour un autre caractère "<" ça ferai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set vrLign=%vrLign:<=^<%
    c'est bien ça ?

    Oula maintenant avec une autre fichier a.txt ça ne fonctionne plus :/

    [DefaultPlayer]
    Name=aa
    team=255
    CLASS=(null)
    Skin=
    Face=

    [Engine.InputPlanning]
    Aliases[0]=(Command="Button m_bMoveUp",Alias="MoveUp")
    Aliases[1]=(Command="Button m_bMoveDown",Alias="MoveDown")
    Aliases[2]=(Command="Button m_bMoveLeft",Alias="MoveLeft")
    Aliases[3]=(Command="Button m_bMoveRight",Alias="MoveRight")
    Aliases[4]=(Command="Button m_bZoomIn",Alias="ZoomIn")
    Aliases[5]=(Command="Button m_bZoomOut",Alias="ZoomOut")
    Aliases[6]=(Command="Button m_bLevelUp | Pulse m_bGoLevelUp",Alias="LevelUp")
    Aliases[7]=(Command="Button m_bLevelDown | Pulse m_bGoLevelDown",Alias="LevelDown")
    Aliases[8]=(Command="Button m_bRotateCW",Alias="RotateClockWise")
    Aliases[9]=(Command="Button m_bRotateCCW",Alias="RotateCounterClockWise")
    Aliases[10]=(Command="Button m_bAngleUp",Alias="AngleUp")
    Aliases[11]=(Command="Button m_bAngleDown",Alias="AngleDown")
    Aliases[12]=(Command="",Alias=")")
    Aliases[13]=(Command="",Alias=")")
    avec ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    for /f "tokens=1 delims=:" %%i in ('type a.txt ^|findstr /n /c:"R6Weapons"') do set vrNumbLigneN=%%i& set /a vrNumbLigneN+=1
    for /f "tokens=1,* delims=:" %%i in ('findstr /n /r . a.txt') do set vrNumbLigne=%%i& set vrLign="%%j"& call :trait
    goto fin
    :trait
    set vrLign=%vrLign:|=^|%
    if "%vrNumbLigne%"=="%vrNumbLigneN%" set vrLign=test
    echo %vrLign:"=%>> b.txt
    pause
    goto :eof
    pause
    :fin
    mon fichier b.txt donne [edit]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    [DefaultPlayer]
    Name=aa
    team=255
    CLASS=(null)
    Skin=
    Face=
    
    [Engine.InputPlanning]
    Aliases[0]=(Command=Button m_bMoveUp,Alias=MoveUp)
    Aliases[1]=(Command=Button m_bMoveDown,Alias=MoveDown)
    Aliases[2]=(Command=Button m_bMoveLeft,Alias=MoveLeft)
    Aliases[3]=(Command=Button m_bMoveRight,Alias=MoveRight)
    Aliases[4]=(Command=Button m_bZoomIn,Alias=ZoomIn)
    Aliases[5]=(Command=Button m_bZoomOut,Alias=ZoomOut)
    car la ligne suivante possède un | [sans les "]

    Pourtant sur le 1er poste ça fonctionne.. help

  6. #6
    Membre Expert
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Par défaut
    2 choses:

    dans ton fichier source il n'y a pas de mot "R6Weapons"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    findstr /n /c:"R6Weapons"
    aussi dans le sous-programme encadre ta variable "vrLign" par des double-quotes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    set "vrLign=%vrLign:|=^|%"

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

Discussions similaires

  1. [Batch] Boucle s'arrêtant a un moment précis
    Par AZzjeioafh dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 31/10/2009, 11h48
  2. Extraire avant un caractère précis
    Par liege67 dans le forum SQL
    Réponses: 2
    Dernier message: 22/12/2007, 17h19
  3. Réponses: 4
    Dernier message: 10/07/2007, 15h17
  4. Réponses: 1
    Dernier message: 22/06/2007, 12h48
  5. Réponses: 2
    Dernier message: 07/06/2007, 17h44

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