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 chaine de caractère contenant "="


Sujet :

Scripts/Batch

  1. #1
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mars 2017
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Remplacer une chaine de caractère contenant "="
    Bonjour à tous,

    Je souhaite remplacer une chaine de caractère contenant un "=" par une autre.
    Pour l'instant mon code ressemble à ça :
    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    @echo off
    setLocal EnableDelayedExpansion
     
    for /f "tokens=* delims= " %%a in (launch.ini) do (
    set str=%%a
    set str=!str:launch=1=launch=2!
     
    echo !str!>>launch2.ini
    )
    type launch2.ini>launch.ini
    del launch2.ini

    Seulement, il ne marche pas, car le premier "=" est pris en compte et le script me remplace launch par 1=launch=2=1
    J'ai essayé avec ce que je pensais le caractère générique * pour remplacer le premier "=" mais rien ne se passe lors de l'éxécution du script.


    Je ne peux pas seulement remplacer le 1 car d'autres lignes dans le fichier .ini sont construites de la même façon et comportent un "1", comme par exemple type=1 ou Freq=1
    Je ne peux également pas modifier la ligne du fichier car, selon ce que j'ai compris, il me faut le numéro de la ligne du fichier. Hors, ce fichier peut être amené à être modifié et la ligne ne serait alors plus la même.

    Merci

  2. #2
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    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 184
    Points : 5 755
    Points
    5 755
    Par défaut
    Je ne vois pas les entrants (launch.ini) et les sortants (ce que tu veux).


    Mon launch.ini
    toto=1=2
    tata=abc=3
    Exemple de script
    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    for /f "tokens=1,* delims==" %%a in (launch.ini) do @echo %%a#%%b

    Résultat
    toto#1=2
    tata#abc=3
    Tu n'a plus qu'a tester si ce qui ce trouve avant le premier = (%%a) est ce que tu souhaite remplacer et faire ta modification.
    Tu as tout ce qui se trouve après le premier = dans %%b aussi si tu veux tester aussi.

  3. #3
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    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 184
    Points : 5 755
    Points
    5 755
    Par défaut
    Après pour ma part j'utiliserai peut être un find ou findstr dans ma boucle faut voir la structure des entrants/sortants.

  4. #4
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mars 2017
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    En utilisant ta solution du %%a#%%b, mon code change bien le launch=1 en launch=2 mais supprime également tout le contenu du fichier .ini.
    J'ai suivi ta piste du findstr et ce coup-ci, ça marche beaucoup mieux :
    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    @echo off
     
    if exist "RobotConfig_last.ini" del /A /Q /F "RobotConfig_last.ini"
     
    if exist "RobotConfig2.ini" del /A /Q /F "RobotConfig2.ini"
     
    copy /y RobotConfig.ini RobotConfig_last.ini
     
    for /f "tokens=* delims==" %%a in (RobotConfig.ini) do (echo %%a|findstr /I /V /B "RelachersMax="||echo RelachersMax=2)>>"RobotConfig2.ini"
     
    move /Y "RobotConfig2.ini" "RobotConfig.ini" >nul

    Merci beaucoup pour ton aide

Discussions similaires

  1. remplacer une chaine de caractères avec sed
    Par salseropom dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 15/05/2007, 14h56
  2. JSP : comment remplacer une chaine de caractères par une autre
    Par techquos dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 14/12/2006, 09h37
  3. Réponses: 4
    Dernier message: 18/07/2006, 16h31
  4. Réponses: 4
    Dernier message: 18/05/2006, 15h54
  5. [debutant][String] Remplacer une chaine de caractère contenant un ?
    Par Jarodnet dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 12/10/2005, 12h47

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