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 :

Remplacer une partie d'une chaîne de caractères par une variable


Sujet :

Scripts/Batch

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 6
    Par défaut Remplacer une partie d'une chaîne de caractères par une variable
    Bonjour ,

    j'ai un fichier xml dans lequel je dois remplacer une partie d'une chaîne de caractères par une valeur incrémentale:

    Fichier xml:
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <balise>testbla032</balise>
    <balise>testbla012</balise>
    <balise>testbla043</balise>

    résultat que j'attends :

    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <balise>testbla001</balise>
    <balise>testbla002</balise>
    <balise>testbla003</balise>

    ce que j'ai pour l'instant qui ne fonctionne pas :

    Code Batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    @echo off&cls
    set fichier=test1.txt
    set chaine= testbla
     
    if exist output.txt del output.txt
    setlocal EnableDelayedExpansion
    for /f "delims=" %%a in ('type %fichier%') do (
        set $ligne=%%a
    	echo %%a
    	PAUSE
        set $ligne=!$ligne:%chaine%=%001%!
        echo !$ligne!>>output.txt)
    PAUSE
    echo OK

    Merci de votre aide

  2. #2
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    Ton testbla est il toujours suivi de 3 caractères ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 6
    Par défaut
    oui toujours

  4. #4
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    Je te propose quelque chose de simple par rapport à ton exemple

    Code batch : 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
    @echo off&cls
    set fichier=test1.txt
    set chaine=testbla
     
    if exist output.txt del output.txt
    setlocal EnableDelayedExpansion
     
    set /a idx=0
    for /f "tokens=1,2 delims=<>" %%a in (%fichier%) do (
    	set /a idx+=1
    	set ids=00!idx!
    	set ids=!ids:~-3!
    	echo ^<%%a^>%chaine%!ids!^</%%a^>
    )>>output.txt
     
    pause

  5. #5
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    Mais peut être que ton xml est plus compliqué que tu ne le dit.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 6
    Par défaut
    Super merci la solution marche top, mais en effet mon fichier est un peu plus complexe
    puisque j'ai aussi des valeurs différentes:

    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <balise>testbko032</balise>
    <balise>testblo012</balise>
    <balise>testbre043</balise>

    j'aurais dû faire une recherche plutôt sur la fermeture de la balise '<\balise>'
    et changer juste les trois chiffres avant

    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <balise>testbko001</balise>
    <balise>testblo002</balise>
    <balise>testbre003</balise>

    je suis en train d'essayer si j'y arrive avec ta solution

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 6
    Par défaut
    Merci Eric avec quelques modifications sur ton code j'obtiens ce que je veux !

    Code Batch : 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&cls
    set fichier=test1.txt
    set chaine=/balise
     
    if exist output.txt del output.txt
    setlocal EnableDelayedExpansion
     
    set /a idx=0
    for /f "tokens=1,2 delims=/" %%a in (%fichier%) do (
    	set ligne=%%a
    	set /a idx+=1
    	set ids=00!idx!
    	set ids=!ids:~-3!
    	echo !ligne:~0,15!!ids!^<%chaine%^>
    )>>output.txt
     
    pause


    Merci encore,
    J'ai une autre petite question toujours sur le même sujet est il aussi possible d'appliquer la modification que quand on tombe sur la chaîne de caractères qu'on recherche
    exemple:

    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <balise>testbla023</balise>
    <balise>testblo032</balise>
           <test>testbre053</test>
    <balise>testbla043</balise>

    résultat:

    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <balise>testbla001</balise>
    <balise>testblo002</balise>
           <test>testbre053</test>
    <balise>testbla003</balise>

  8. #8
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    Petite adaptation

    Code batch : 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&cls
    set fichier=test1.txt
     
    if exist output.txt del output.txt
    setlocal EnableDelayedExpansion
     
    set /a idx=0
    for /f "tokens=1,2 delims=<>" %%a in (%fichier%) do (
    	set /a idx+=1
    	set ids=00!idx!
    	set ids=!ids:~-3!
    	set chaine=%%~b
    	set chaine=!chaine:~,-3!
    	echo ^<%%a^>!chaine!!ids!^</%%a^>
    )>>output.txt
     
    pause

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

Discussions similaires

  1. [PowerShell] Récuperer le contenu d'une chaine de caracteres de taille variable
    Par Parkiro69 dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 20/02/2014, 09h01
  2. remplacer une variable par sa valeur dans une chaine
    Par regis1_1 dans le forum Langage
    Réponses: 5
    Dernier message: 12/05/2013, 12h07
  3. Réponses: 2
    Dernier message: 12/03/2008, 13h44
  4. Réponses: 1
    Dernier message: 16/11/2006, 13h33
  5. comparaison d une partie de la chaine de caractere
    Par sneb5757 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 26/12/2005, 15h50

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