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 :

Identifier puis remplacer une ligne dans un fichier [Batch]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2014
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Par défaut Identifier puis remplacer une ligne dans un fichier
    Re-bonjour.

    Je viens de repasser de linux (shell) à windows (batch) et je ne sais plus rien.
    Je suis incapable de modifier une ligne dont je connais le début par une autre.

    Je connais la chaîne de caractères du début de la ligne à remplacer.
    Je connais la valeur (chaine de caractère) que la ligne doit avoir à la fin.

    Je ne sais pas comment s'identifie une ligne en batch (numéro ?) ni comment trouver cet identifiant.

    merci de votre aide, je n'ai pas trouvé cet après midi de cours expliquant ces notions.

    Merci de votre aide.

  2. #2
    Membre émérite
    Homme Profil pro
    Développeur .NET en devenir
    Inscrit en
    Août 2017
    Messages
    549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET en devenir
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2017
    Messages : 549
    Par défaut
    Bonjour,

    C'est un peu vague tout ça, s'il s'agit d'un fichier texte tu peux le parcourir ligne par ligne grâce à une boucle FOR /F puis tu testes ton début de ligne grâce à un IF ou bien grâce à un FINDSTR.

    Tu ne peux pas modifier un fichier texte, il faut le recréer ligne par ligne grâce à la commande ECHO.

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2014
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Par défaut
    Merci.
    c'est un fichier texte.
    Il faut que je supprime la ligne et que je la recrée comme je la veux ?
    Mais comment la reporter avec le même numéro de ligne ?

  4. #4
    Membre émérite
    Homme Profil pro
    Développeur .NET en devenir
    Inscrit en
    Août 2017
    Messages
    549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET en devenir
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2017
    Messages : 549
    Par défaut
    Par exemple :

    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    setlocal enabledelayedexpansion
     
    set "chaine=toto va au dodo"
     
    for /f "usebackq delims=" %%A in ("chemin vers le fichier\fichier.txt") do (
     
    set "ligne=%%A"
    set "debut_de_ligne=!ligne:~0,15!"
     
    if /i "!debut_de_ligne!"=="%chaine%" (echo je sais pas quoi) else (echo.!ligne!>>"nouveau fichier.txt")
     
    )

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2014
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Par défaut
    Merci Barnabé.

    Je dois avoir fait de grosses erreurs de syntaxe car ça 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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    @echo on
     
    set logs="logs_creat.txt"
    del %logs%
    set debut_chaine="    <publishUrl>"
     
    ::::::::::::: VARIABLE A MODIFIER :::::::::::::
    REM Correspond au nom de fichier avec une ligne à modifier
    set INTEGRATIONpubxml="C:\Laboratoire\Sources_Developement\developpement-develop_354kufkut32543.5\WAS\WAS_SOURCES\Properties\PublishProfiles\INTEGRATION.pubxml" >> %logs%
    echo %INTEGRATIONpubxml% >> %logs%
     
     
    REM existence du fichier a modifier
    If not exist %INTEGRATIONpubxml% goto :file_notfound
     
     
    REM Correspond à la nouvelle ligne
    set file_line_replace="<publishUrl>C:\PVC_TestDeploy_avec_zip\Sources_Developement\developpement-develop\WAS\WAS_SOURCES</publishUrl>"  >> %logs%
     
    REM effectuer les modification du fichier 
    	if exist "nouveau_fichier.txt" del nouveau_fichier.txt
     
    setlocal enabledelayedexpansion
     
    for /f "usebackq delims=" %%A in (%INTEGRATIONpubxml%) do (
     
    	set "ligne=%%A"
    	set "debut_de_ligne=!ligne:~0,17!"
     
    	if /i "!debut_de_ligne!"=="%debut_chaine%" (echo %file_line_replace% >> "nouveau_fichier.txt") else (echo !ligne! >> "nouveau_fichier.txt")
     
    )
    echo Modification terminee !  >> %logs%

  6. #6
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2014
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Par défaut
    Je pense qu'il y a un soucis lorsque j'évalue mes variables :
    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    if /i "!debut_de_ligne!"=="%debut_chaine%"
    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo !debut_de_ligne!  >> %logs%
    echo %debut_chaine% >> %logs%
    renvoie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        <publishUrl>  
    "<publishUrl>"
    Il y a peut être un soucis avec les double quote et les espaces.

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

Discussions similaires

  1. Remplacer une ligne dans un fichier texte !
    Par toulouz1 dans le forum VBScript
    Réponses: 23
    Dernier message: 19/07/2017, 10h26
  2. [Batch] Remplacer une ligne dans un fichier modèle
    Par PAB/31/SAB dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 12/03/2010, 10h16
  3. Remplacer une ligne dans un fichier
    Par mister3957 dans le forum C++
    Réponses: 6
    Dernier message: 31/03/2009, 03h09
  4. Remplacer une ligne dans un fichier de configuration
    Par morgan47 dans le forum Langage
    Réponses: 3
    Dernier message: 08/09/2008, 13h15
  5. Remplacer une ligne dans un fichier ?
    Par FenX. dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 30/05/2008, 10h45

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