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 :

Recherche mot et remplace par un autre [Batch]


Sujet :

Scripts/Batch

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2002
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Juillet 2002
    Messages : 27
    Points : 28
    Points
    28
    Par défaut Recherche mot et remplace par un autre
    Bonjour,

    Le code ci-dessous dont le but est de remplacer un paramètre "[param1]"par un mot "LAUNCH BR" produit un résultat que je ne comprends pas si la ligne démarre par un espace ou une tabulation:

    Si la ligne commence par un espace : la ligne suivante est écrite "[param1]=LAUNCH BR"
    En cas de tabulation : la ligne suivante est écrite "Commande ECHO d‚sactiv‚e."

    Sinon, il remplace bien [param1] par "LAUNCH BR"

    Merci par avance de votre aide

    Code : 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
    @echo off
    
    Set vCommande=
    Set vVersion=
    
    del /Q FichExec.txt
    copy FichOri.txt FichExec.txt
    
    Set vCommande=LAUNCH BR
    
    setLocal EnableDelayedExpansion
    
    for /f "tokens=* delims= " %%a in (FichExec.txt) do (
    set str=%%a
    set str=!str:[param1]=%vCommande%!
    echo !str!>>fichTemp.txt)
    
    REM Creation du script Conso
    REM ========================
    type fichTemp.txt>FichExec.txt
    del fichTemp.txt
    
    REM ** debugg ********************
    REM type FichExec.txt
    REM pause>nul
    Fichier source
    Vide
    Vide

    Vide
    Vide

    tab-ci-dessus
    vide
    [param1]

    vide

    espace-ci-dessus
    [param2]

    double espace ci-dessus
    Résulat obtenu
    Vide
    Vide
    Vide
    Vide
    Commande ECHO d‚sactiv‚e.
    tab-ci-dessus
    vide
    LAUNCH BR
    vide
    [param1]=LAUNCH BR
    espace-ci-dessus
    [param2]
    [param1]=LAUNCH BR
    double espace ci-dessus
    Remarque : dans le résulat, les sauts de lignes sont supprimés!

  2. #2
    Membre émérite Avatar de Drizzt [Drone38]
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2004
    Messages
    1 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 001
    Points : 2 453
    Points
    2 453
    Par défaut
    Lorsque ta ligne est juste espace ou tabulation ta variable %%a est vide d'ou les résultats un peu surprenants.

    Ajoute simplement un if pour résoudre le problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    for /f "tokens=* delims= " %%a in (FichExec.txt) do (
        if "%%a"=="" (
            echo. >> fichTemp.txt
        ) else (
            set str=%%a
            set str=!str:[param1]=%vCommande%!
            echo !str!>>fichTemp.txt
        )
    )
    Pour les lignes vides, il faut faire un cas particulier car elles ne sont pas traitées par ton for.
    Je l'ai déjà fait sur un script, mais je n'ai plus en tête ce que j'avais fait. J'essairai de regarder chez moi si je retrouve le script.
    Je ne réponds pas aux questions techniques par MP, le forum est là pour cela.

    La crypto c'est comme les flambys, une fois que tu as trouvé la languette tu as juste à tirer pour tout faire tomber.

    (\ _ /)
    (='.'=)
    Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2002
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Juillet 2002
    Messages : 27
    Points : 28
    Points
    28
    Par défaut
    Bonjour,

    Je te remercie.
    J'ai mis à jour pour prendre en compte la tabulation comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    for /f "tokens=* delims= " %%a in (FichExec.txt) do (
        if "%%a"=="" (
            echo. >> fichTemp.txt
        ) else (
    	if "%%a"=="	" (
            echo. >> fichTemp.txt
    	) else (
            set str=%%a
            set str=!str:[param1]=%vCommande%!
            echo !str!>>fichTemp.txt
    	)
        )
    )
    Au cas où tu retrouverais la ligne de code pour le traitement des lignes vides, je suis preneur.

    Merci

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 17/06/2010, 12h58
  2. Réponses: 2
    Dernier message: 26/05/2010, 11h23
  3. Réponses: 4
    Dernier message: 02/05/2008, 10h44
  4. extraire une chaine et remplacer par une autre
    Par D.Mounir dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 01/06/2007, 20h04
  5. Police remplacée par une autre
    Par unreal2me dans le forum Balisage (X)HTML et validation W3C
    Réponses: 12
    Dernier message: 02/02/2007, 23h50

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