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

Windows Discussion :

[batch] Remplacement de caractères dans un fichier


Sujet :

Windows

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 288
    Par défaut [batch] Remplacement de caractères dans un fichier
    Bonjour,

    J'ai une série de templates de scripts qui comportent un marqueur du genre $dossier ou $9 (je peux faire ce que je veux là-dessus). Je voudrais faire un .bat qui lit mon template ligne par ligne, interpole les variables (ou remplace mes marqueurs) et envoie le résultat dans un fichier texte...

    J'ai parcouru la FAQ et n'ai trouvé qu'une solution faisant appel à un exécutable externe (switch), ce qui m'est interdit...

    Y a-t-il une possibilité de faire cela en pur batch ?

  2. #2
    Membre éprouvé
    Avatar de koKoTis
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 438
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 438
    Par défaut
    je ne sui pas sur que sa marche avec la caractére $ mais essaye ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    setlocal enableDelayedExpansion 
    
     for /f "skip=* tokens=* delims=" %%i in ('type fichier.txt') do ( 
    
                set vrTmp=%%i 
                set vrTmp2=%vrTmp:$dossier=$9%
                 echo %vrTmp2%>> result.txt
       )
    endlocal

  3. #3
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 288
    Par défaut
    oublions le caractère $. Si par exemple je veux remplacer truc par machin, ça donne ça ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    setlocal enableDelayedExpansion 
    
     for /f "skip=* tokens=* delims=" %%i in ('type fichier.txt') do ( 
    
                set vrTmp=%%i 
                set vrTmp2=%vrTmp:truc=machin%
                 echo %vrTmp2%>> result.txt
       )
    endlocal
    Testé comme ça, ça ne marche pas, mais bon...

  4. #4
    Membre éprouvé
    Avatar de koKoTis
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 438
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 438
    Par défaut
    ah oui j'ai négliger quelque chose:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    setlocal enableDelayedExpansion 
    
     for /f "skip=* tokens=* delims=" %%i in ('type fichier.txt') do ( 
    
                set vrTmp=%%i 
                set vrTmp2=!vrTmp:truc=machin!
                 echo !vrTmp2!>> result.txt
       )
    endlocal
    si non c bien ca

  5. #5
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 288
    Par défaut
    ça ne marche pas. D'une part, si je mets le nom de fichier entre apostrophes, il l'exécute au lieu de le lire. Surtout, j'ai l'impression que l'expansion retardée ne concerne que %%i et non les autres variables.

    Pour être précis, voici mon dernier test :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    setlocal enableDelayedExpansion 
    echo off
    for /f "tokens=* delims=" %%i in (kk.txt) do (
      set ligne=%%i
      set ligne2=%ligne:truc=machin%
      echo %ligne2%
    )
    
    echo on
    endlocal
    Mon fichier kk.txt contient trois lignes. Le résultat est :
    ECHO is off.
    ECHO is off.
    ECHO is off.
    ... ce qui doit correspondre à set ligne2=echo ?

  6. #6
    Membre éprouvé
    Avatar de koKoTis
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 438
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 438
    Par défaut
    tu a elever type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    setlocal enableDelayedExpansion 
    echo off
    for /f "tokens=* delims=" %%i in ('type kk.txt') do (
      set ligne=%%i
      set ligne2=%ligne:truc=machin%
      echo %ligne2%
    )
    
    echo on
    endlocal

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

Discussions similaires

  1. [Batch] Remplacer des caractères dans un fichier texte
    Par Benoit Labbey dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 09/06/2009, 16h43
  2. Remplacer un caractère dans un fichier texte
    Par steelk dans le forum Excel
    Réponses: 36
    Dernier message: 29/01/2008, 15h10
  3. [Batch] remplacer une string dans un fichier
    Par yelbied dans le forum Windows
    Réponses: 5
    Dernier message: 12/07/2007, 10h36
  4. Réponses: 3
    Dernier message: 27/06/2005, 16h24
  5. Réponses: 5
    Dernier message: 25/01/2005, 14h26

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