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 :

Manipulation de chaine de caractère [Batch]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2014
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2014
    Messages : 59
    Par défaut Manipulation de chaine de caractère
    Bonjour,

    Je souhaite remplacer une chaine de caractère dans mon fichier. Mon fichier test.txt contient plusieurs lignes. le script parcourt le fichier et cherche la chaine "Budget" définie dans la variable "Var". s'il trouve la variable "Var" dans la ligne, il remplace dans le fichier le résultat de !Param:~3,4! par la chaine "Finance" définie dans la variable "Remplace. S'il ne trouve pas la chaine, il ne fait rien d'autre.

    Ci-dessous, mon script.

    Merci d'avance.

    Code bat : 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
     
    @echo off
    setlocal enabledelayedexpansion
    set THECSVFILE=test.txt
     
    set fichier=c:\batch\test.xt
    set "Var=Budget"
    set "Remplace=Finance"
     
    for /f %%A in ('type %fichier% ^| findstr /c:"%Var%") do (
        set Param=%%A
    	echo !Param:~3,4!
    	set "val=!Param:~3,4!"
    	File=!Param:%val%=%Remplace%!
    )
     
    pause

  2. #2
    Membre émérite Avatar de devilsnake88
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2013
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2013
    Messages : 453
    Par défaut
    Bonjour,

    Si j'ai bien compris tu cherches à changer tout les "Budget" en "Finance".
    Si c'est le cas, essaye ceci:

    Code bat : 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
    @echo off & cls
    setlocal enabledelayedexpansion
     
    set "Fichier=test.txt"
    set "Fichier_Temporaire=test_tmp.txt"
    set "Search_Text=Budget"
    set "Replace_Text=Finance"
     
    for /f "tokens=1,* delims=¶" %%A in ( '"type !Fichier!"') do (
    	SET string=%%A
    	SET modified=!string:%Search_Text%=%Replace_Text%!
    	echo !modified! >> !Fichier_Temporaire!
    )
    del !Fichier!
    move !Fichier_Temporaire! !Fichier!
     
    pause
    exit

  3. #3
    Membre actif
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2014
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2014
    Messages : 59
    Par défaut
    Merci beaucoup devilsnake88 ! Ton code marche très bien.

    Peut-etre que je me suis mal exprimé. Mais j'ai une condition de plus. la voici : Dans mon fichier texte, j'ai une chaine de plus à extraire. cette chaine contient 4 lettres et/ou chiffre. elle est placé toujours au troisième caractère de la ligne contenant la chaine budget.
    cette chaine aussi est à remplacer par "finance".

    Par exemple la ligne ci-dessous :

    LesXXXXXXla france Budget
    donc non seulement je vais remplacer la chaine Budget par Finance mais aussi la chaine XXXXXX par Finance aussi.
    sachant que la chaine XXXXXX peut varier. mais elle est toujours passée à la ligne se trouvant le mot Budget.

  4. #4
    Membre émérite Avatar de devilsnake88
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2013
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2013
    Messages : 453
    Par défaut
    Ok, je t'avoue que je sèche un peu là mais je peux te proposer une bonne partie de la réponse:

    Code bat : 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
    27
    28
    29
    30
    31
    32
    33
    @echo off & cls
    setlocal enabledelayedexpansion
     
    set "Fichier=test.txt"
    set "Fichier_Temporaire=test_tmp.txt"
    set "Search_Text=Budget"
    set "Replace_Text=Finance"
     
    REM for /f "tokens=1,* delims=¶" %%A in ( '"type !Fichier!"') do (
    	REM SET string=%%A
    	REM SET modified=!string:%Search_Text%=%Replace_Text%!
    	REM echo !modified! >> !Fichier_Temporaire!
    REM )
    REM del !Fichier!
    REM move !Fichier_Temporaire! !Fichier!
     
    setlocal enabledelayedexpansion
    for /f "tokens=1 delims=¶" %%a in ('type "%Fichier%" ^| find /i "%Search_Text%"') do (
        set Line=%%a
        echo Cette ligne "!Line!" contient "%Search_Text%"
        for /f "tokens=1" %%b in ("!Line!") do (
            set "Lines_Searched=%%b"
            set "Text_Searched=!Lines_Searched:~3,4!"
            echo  - Chaine extraite de la ligne: "!Text_Searched!"
     
            SET Text_Searched_Modified=!^!Line^!:^!Text_Searched^!=%Replace_Text%!
            REM echo !Text_Searched_Modified! >> !Fichier_Temporaire!
            echo    "!Text_Searched_Modified!" est l'autre ligne a modifier
        )
    )
    Endlocal
    pause
    exit

    Il ne reste plus qu'à finaliser.

  5. #5
    Membre actif
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2014
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2014
    Messages : 59
    Par défaut
    Merci pour la réponse.

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

Discussions similaires

  1. manipuler les chaines de caractères en scripte python
    Par Djawida dans le forum Général Python
    Réponses: 1
    Dernier message: 04/03/2010, 20h33
  2. Manipulation de chaine de caractères, supression d'une apostrophe
    Par pmithrandir dans le forum Scripts/Batch
    Réponses: 6
    Dernier message: 28/11/2007, 07h55
  3. Manipulation des chaines de caractères en c
    Par developppez dans le forum C
    Réponses: 8
    Dernier message: 29/04/2007, 13h04
  4. Réponses: 4
    Dernier message: 14/10/2006, 23h38
  5. Réponses: 4
    Dernier message: 20/08/2004, 10h59

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