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 :

Modifier une chaine de caractères [Batch]


Sujet :

Scripts/Batch

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

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Points : 336
    Points
    336
    Par défaut Modifier une chaine de caractères
    Bonjour.

    Je pensais avoir compris mais je n'ai rien compris du tout.
    J'ai un fichier %PLversion_dev% dont je veux parcourir les lignes pour chercher la valeur %versionOld% puis :
    -copier la ligne initiale si la valeur n'est pas trouvée
    -copier la ligne en remplaçant %version% par %versionOld% si la valeur est trouvée.

    dans un premier temps, j'essaie simplement de copier toutes les lignes du fichier %PLversion_dev% dans le fichier %PLversionREMtmp%.
    Mon script ne me copie que la dernière ligne à chaque boucle, ce n'est pas ce que je veux.
    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if exist %PLversionREMtmp% del %PLversionREMtmp%
    for /f "usebackq delims=" %%A in ("%PLversion_dev%") do (
     
    			set "ligneREM=%%A"
    			echo %ligneREM% >> %PLversionREMtmp%
     
    		)

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

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Points : 336
    Points
    336
    Par défaut
    OK, premiere partie réglée, je continue.

    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if exist %PLversionREMtmp% del %PLversionREMtmp%
    for /f "usebackq delims=" %%A in ("%PLversion_dev%") do (
     
    			echo.%%A >> %PLversionREMtmp%
     
    		)

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

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Points : 336
    Points
    336
    Par défaut
    Je merdouille.

    Je parcours les lignes de mon fichier : OK

    Pour chacune des lignes, je veux :
    1-Tester si une chaine de caractères est présente
    2-Si elle est présente, remplacer cette chaine par une autre et insérer la ligne modifier dans un fichier
    3-Si elle est absente, insérer la ligne lue sans modification dans le fichier.

    Je n'arrive pas à faire mon test ni modifier ma ligne.

    Que contient le %%A ?
    Comment avoir sa (ses) valeurs, numéro de ligne valeur de la ligne, etc?
    Comment mettre la valeur de cette ligne dans une autre variable ?


    Pouvez vous m'aider ?

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur .NET en devenir
    Inscrit en
    Août 2017
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    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 : 546
    Points : 1 084
    Points
    1 084
    Par défaut
    %%A contient la première ligne de ton fichier, puis la suivante, ainsi de suite.

    Tu peux mettre %%A dans une autre variable, mais si celle-ci est définie à l'intérieur d'un bloc alors il faut la retarder.

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

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Points : 336
    Points
    336
    Par défaut
    Oui mais là, je n'ai pas encore compris comment faire :
    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for /f "usebackq" %%A in ('type "%PLversion_dev%"') do (
     
    set "strl=%%A"
     
    echo !str1! >> %logs%
    renvoie
    !str1!
    Et aprés pour faire mon
    IF la chaine de caracteres est dans ma ligne
    je modifie la ligne et je l'écris dans mon fichier
    ELSE
    Je copie simplement la ligne dans mon fichier.

    Là je meurs.

  6. #6
    Membre éprouvé
    Homme Profil pro
    Développeur .NET en devenir
    Inscrit en
    Août 2017
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    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 : 546
    Points : 1 084
    Points
    1 084
    Par défaut
    C'est bien tu as entouré ta variable avec des points d'exclamation mais tu n'as pas activé l'expansion retardée :
    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    setlocal enabledelayedexpansion

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

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Points : 336
    Points
    336
    Par défaut
    C'est poussif.
    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    for /f "usebackq" %%A in ('type "%PLversion_dev%"') do (
     
    setlocal enabledelayedexpansion
    set "strl=%%A"
     
    echo !str1! >> %logs%
     
    endlocal
    ne renvoie rien.

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

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Points : 336
    Points
    336
    Par défaut
    Ah non!
    Ca renvoie : Commande ECHO d‚sactiv‚e.

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

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Points : 336
    Points
    336
    Par défaut
    Bon il y a un problème dans for /f "usebackq" %%A in ('type %PLversion_dev%'), echo %%A renvoie type

  10. #10
    Membre éprouvé
    Homme Profil pro
    Développeur .NET en devenir
    Inscrit en
    Août 2017
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    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 : 546
    Points : 1 084
    Points
    1 084
    Par défaut
    Oui tu as fait une erreur dans les paramètres de ta boucle FOR, si tu utilises TYPE tu n'as plus besoin de USEBACKQ, voilà la correction

    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    for /f "delims=" %%A in ('type "%PLversion_dev%"') do (
     
    setlocal enabledelayedexpansion
    set "strl=%%A"
     
    echo !str1! >> %logs%
     
    endlocal
     
    )

    Tu peux mettre le setlocal en dehors de la boucle, au début de ton script.

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

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Points : 336
    Points
    336
    Par défaut
    C'est une horreur mon echo !str1! >> %logs% renvoie toujours Commande ECHO d‚sactiv‚e.

  12. #12
    Membre éprouvé
    Homme Profil pro
    Développeur .NET en devenir
    Inscrit en
    Août 2017
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    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 : 546
    Points : 1 084
    Points
    1 084
    Par défaut
    Difficile de t'aider si tu ne montres pas tout ton code.

    Le bout de code de mon dernier message a été testé, il fonctionne

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

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Points : 336
    Points
    336
    Par défaut
    OK.

    Bon désolé, du coup ça fait le code à re-tester :

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    @echo off
    REM set /a i=0 
    setlocal enabledelayedexpansion
    set logs="logs_creat.txt"
    if exist %logs% (del %logs%)
     
    REM variables pour modifier le fichier INTEGRATION.pubxml
    set "debut=publishUrl"
    set "nouveauxml=nouveau_fichier_INTEGRATION.txt"
     
    REM Correspond au nom de fichier avec une ligne à modifier
    set "INTEGRATIONpubxml=C:\Laboratoire\Sources_Developement\developpement-develop\WAS\WAS_SOURCES\Properties\PublishProfiles\INTEGRATION.pubxml"
    echo %INTEGRATIONpubxml% >> %logs%
     
    REM variables pour modifier le fichier version 
    set "versionOld=G0R0C0"
    Set "versionNew=V0.0"
    set "PLversion_dev=C:\Laboratoire\Sources_Developement\developpement-develop\#PL_VERSION\PL_VERSION.bat"
    set "PLversionREMtmp=PLversionREM.txt"
    set "PLversionREPtmp=PLversionREP.txt"
     
    set "PLversion_rep=C:\Laboratoire\Sources_Report\developpement_report-develop\#PL_VERSION\PL_VERSION.bat"
     
     
    echo A1 >> %logs%
    echo "Modification des noms des répertoires sources : suppression du cha"  >> %logs%
    REM Modification des noms des sources git
    REM La syntaxe du nom de fichier, de répertoire ou de volume est incorrecte.
     
    echo A10 >> %logs%
    REM Modification des noms des sources Developement
    	echo "Modification du nom du répertoire sources Developement"  >> %logs%
    	set "Rep_travail_dev=C:\Laboratoire\Sources_Developement"
    	set "Nom_cible_dev=\developpement-develop"
    	move "%Rep_travail_dev%%Nom_cible_dev%*" "%Rep_travail_dev%%Nom_cible_dev%" >> %logs%
     
    echo A11 >> %logs%
    REM Modification des noms des sources Exploitation
    	echo "Modification du nom du répertoire sources Exploitation"  >> %logs%
    	set "Rep_travail_expl=C:\Laboratoire\Sources_Exploitation"
    	set "Nom_cible_expl=\exploitation-develop"
    	move "%Rep_travail_expl%%Nom_cible_expl%*" "%Rep_travail_expl%%Nom_cible_expl%" >> %logs%
     
    echo A12 >> %logs%
    REM Modification des noms des sources Report
    	echo "Modification du nom du répertoire sources Report"  >> %logs%
    	set "Rep_travail_rep=C:\Laboratoire\Sources_Report"
    	set "Nom_cible_rep=\developpement_report-develop"
    	move "%Rep_travail_rep%%Nom_cible_rep%*" "%Rep_travail_rep%%Nom_cible_rep%" >> %logs% 
     
    echo A2 >> %logs%
    	REM existence du fichier a modifier
    	If not exist "%INTEGRATIONpubxml%" (echo Fichier introuvable ! >> %logs%)
     
    	REM Correspond à la nouvelle ligne
    	set "file_line_replace=    ^<publishUrl^>C:\PVC_TestDeploy_avec_zip\Sources_Developement\developpement-develop\WAS\WAS_SOURCES^</publishUrl^>"
    	::::::::::::: VARIABLE A MODIFIER :::::::::::::
     
     
    echo "A3 : fichier %INTEGRATIONpubxml% AVANT MODIFICATION" >> %logs%
    type %INTEGRATIONpubxml% >> %logs%
    REM effectuer les modification du fichier INTEGRATION.pubxml
    	if exist "%nouveauxml%" (del "%nouveauxml%")
     
    	echo "A31 : verification de l'existence du fichier INTEGRATION.pubxml" >> %logs% 
     
    		(if exist "%INTEGRATIONpubxml%" (echo %INTEGRATIONpubxml%) else (echo "pas de pubxml"))>> %logs%
    	    REM set /a i=0	 
    		for /f "usebackq delims=" %%A in ("%INTEGRATIONpubxml%") do (
     
     
    	REM echo "A32%i% : creation d'une copie de INTEGRATION.pubxml avec modification de la ligne commencant par <publishUrl>" >> %logs% 
     
    			set "ligne=%%A"
    			call :ecriture_integration ligne
     
    			REM set /a i+=1
    		)
     
    	echo "A33 : fichier %nouveauxml% APRES MODIFICATION" >> %logs%
    	type %nouveauxml% >> %logs%
     
    	echo "A34 : suppression du fichier initial INTEGRATION.pubxml" >> %logs%
    	del %INTEGRATIONpubxml% >> %logs%
     
    	echo "A35 : renommage-copie du fichier nouveau_fichier_INTEGRATION.txt en INTEGRATION.pubxml" >> %logs%
    	move  %nouveauxml%  %INTEGRATIONpubxml% >> %logs%
     
    	echo "A36 : fichier %INTEGRATIONpubxml% APRES MODIFICATION" %versionOld% >> %logs%
    	type %INTEGRATIONpubxml% >> %logs%
     
    echo Modification terminee ! >> %logs%
     
     
    echo "A6 : modification dans le PLVERSION" >> %logs%
     
    if exist %PLversionREMtmp% del %PLversionREMtmp%
    for /f "delims=" %%A in ('type "%PLversion_dev%"') do (
     
     
    set "strl=%%A"
     
    echo !str1! >> %logs%
     
    echo %%A >> %logs%
     
    echo "on entre dans le if" >> %logs%
     
     
     
    		)
     
    endlocal
     
    goto :eof
     
    :ecriture_integration
     
    REM setlocal enabledelayedexpansion
    (if /i "!%1:~5,10!"=="%debut%" (echo %file_line_replace%) else (echo.!%1!))>> %nouveauxml%
    echo "A32!i! : creation d'une copie de INTEGRATION.pubxml avec modification de la ligne commencant par <publishUrl>" >> %logs% 
    set /a i+=1
    echo !i! >> %logs%
     
     
    goto :eof

  14. #14
    Membre éprouvé
    Homme Profil pro
    Développeur .NET en devenir
    Inscrit en
    Août 2017
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    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 : 546
    Points : 1 084
    Points
    1 084
    Par défaut
    Si tu mets l'expansion retardée sur la totalité du script alors tu fais une croix sur le fameux ! qui se trouve dans ton fichier INTEGRATION.pubxml

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

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Points : 336
    Points
    336
    Par défaut
    Et oui.

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    @echo off
    REM set /a i=0 
     
    set logs="logs_creat.txt"
    if exist %logs% (del %logs%)
     
    REM variables pour modifier le fichier INTEGRATION.pubxml
    set "debut=publishUrl"
    set "nouveauxml=nouveau_fichier_INTEGRATION.txt"
     
    REM Correspond au nom de fichier avec une ligne à modifier
    set "INTEGRATIONpubxml=C:\Laboratoire\Sources_Developement\developpement-develop\WAS\WAS_SOURCES\Properties\PublishProfiles\INTEGRATION.pubxml"
    echo %INTEGRATIONpubxml% >> %logs%
     
    REM variables pour modifier le fichier version 
    set "versionOld=G0R0C0"
    Set "versionNew=V0.0"
    set "PLversion_dev=C:\Laboratoire\Sources_Developement\developpement-develop\#PL_VERSION\PL_VERSION.bat"
    set "PLversionREMtmp=PLversionREM.txt"
    set "PLversionREPtmp=PLversionREP.txt"
     
    set "PLversion_rep=C:\Laboratoire\Sources_Report\developpement_report-develop\#PL_VERSION\PL_VERSION.bat"
     
     
    echo A1 >> %logs%
    echo "Modification des noms des répertoires sources : suppression du cha"  >> %logs%
    REM Modification des noms des sources git
    REM La syntaxe du nom de fichier, de répertoire ou de volume est incorrecte.
     
    echo A10 >> %logs%
    REM Modification des noms des sources Developement
    	echo "Modification du nom du répertoire sources Developement"  >> %logs%
    	set "Rep_travail_dev=C:\Laboratoire\Sources_Developement"
    	set "Nom_cible_dev=\developpement-develop"
    	move "%Rep_travail_dev%%Nom_cible_dev%*" "%Rep_travail_dev%%Nom_cible_dev%" >> %logs%
     
    echo A11 >> %logs%
    REM Modification des noms des sources Exploitation
    	echo "Modification du nom du répertoire sources Exploitation"  >> %logs%
    	set "Rep_travail_expl=C:\Laboratoire\Sources_Exploitation"
    	set "Nom_cible_expl=\exploitation-develop"
    	move "%Rep_travail_expl%%Nom_cible_expl%*" "%Rep_travail_expl%%Nom_cible_expl%" >> %logs%
     
    echo A12 >> %logs%
    REM Modification des noms des sources Report
    	echo "Modification du nom du répertoire sources Report"  >> %logs%
    	set "Rep_travail_rep=C:\Laboratoire\Sources_Report"
    	set "Nom_cible_rep=\developpement_report-develop"
    	move "%Rep_travail_rep%%Nom_cible_rep%*" "%Rep_travail_rep%%Nom_cible_rep%" >> %logs% 
     
    echo A2 >> %logs%
    	REM existence du fichier a modifier
    	If not exist "%INTEGRATIONpubxml%" (echo Fichier introuvable ! >> %logs%)
     
    	REM Correspond à la nouvelle ligne
    	set "file_line_replace=    ^<publishUrl^>C:\PVC_TestDeploy_avec_zip\Sources_Developement\developpement-develop\WAS\WAS_SOURCES^</publishUrl^>"
    	::::::::::::: VARIABLE A MODIFIER :::::::::::::
     
     
    echo "A3 : fichier %INTEGRATIONpubxml% AVANT MODIFICATION" >> %logs%
    type %INTEGRATIONpubxml% >> %logs%
    REM effectuer les modification du fichier INTEGRATION.pubxml
    	if exist "%nouveauxml%" (del "%nouveauxml%")
     
    	echo "A31 : verification de l'existence du fichier INTEGRATION.pubxml" >> %logs% 
     
    		(if exist "%INTEGRATIONpubxml%" (echo %INTEGRATIONpubxml%) else (echo "pas de pubxml"))>> %logs%
    	    REM set /a i=0	 
    		for /f "usebackq delims=" %%A in ("%INTEGRATIONpubxml%") do (
     
     
    	REM echo "A32%i% : creation d'une copie de INTEGRATION.pubxml avec modification de la ligne commencant par <publishUrl>" >> %logs% 
     
    			set "ligne=%%A"
    			call :ecriture_integration ligne
     
    			REM set /a i+=1
    		)
     
    	echo "A33 : fichier %nouveauxml% APRES MODIFICATION" >> %logs%
    	type %nouveauxml% >> %logs%
     
    	echo "A34 : suppression du fichier initial INTEGRATION.pubxml" >> %logs%
    	del %INTEGRATIONpubxml% >> %logs%
     
    	echo "A35 : renommage-copie du fichier nouveau_fichier_INTEGRATION.txt en INTEGRATION.pubxml" >> %logs%
    	move  %nouveauxml%  %INTEGRATIONpubxml% >> %logs%
     
    	echo "A36 : fichier %INTEGRATIONpubxml% APRES MODIFICATION" %versionOld% >> %logs%
    	type %INTEGRATIONpubxml% >> %logs%
     
    echo Modification terminee ! >> %logs%
     
     
    echo "A6 : modification dans le PLVERSION" >> %logs%
    setlocal enabledelayedexpansion
    if exist %PLversionREMtmp% del %PLversionREMtmp%
    for /f "delims=" %%A in ('type "%PLversion_dev%"') do (
     
     
    set "strl=%%A"
     
    echo !str1! >> %logs%
     
    echo %%A >> %logs%
     
    echo "on entre dans le if" >> %logs%
     
    		)
     
    endlocal
     
    goto :eof
     
    :ecriture_integration
     
    setlocal enabledelayedexpansion
    (if /i "!%1:~5,10!"=="%debut%" (echo %file_line_replace%) else (echo.!%1!))>> %nouveauxml%
    echo "A32!i! : creation d'une copie de INTEGRATION.pubxml avec modification de la ligne commencant par <publishUrl>" >> %logs% 
    set /a i+=1
    echo !i! >> %logs%
    endlocal
     
     
     
    goto :eof

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

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Points : 336
    Points
    336
    Par défaut
    C'est un truc de fou ce langange batch.

    Impossible de faire mes echo pour voir le contenu des variables : Commande ECHO d‚sactiv‚e.
    Sauf pour le echo %%A >> %logs%.

    incapable de modifier ma ligne (str1) quand elle contient la valeur %versionOld% et de la laisser tel quel lorsqu'elle ne contient pas cette valeur.


    J'ai extrait le code sur lequel je bosse :
    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
    34
    35
    36
    37
    38
    39
    40
    41
    @echo off
     
    set logs="logs_PL.txt"
    if exist %logs% (del %logs%)
     
    REM variables pour modifier le fichier version 
    set "versionOld=G0R0C0"
    Set "versionNew=V0.0"
    set "PLversion_dev=C:\Laboratoire\Sources_Developement\developpement-develop\#PL_VERSION\PL_VERSION.bat"
    set "PLversionREMtmp=PLversionREM.txt"
    set "PLversionREPtmp=PLversionREP.txt"
     
    set "PLversion_rep=C:\Laboratoire\Sources_Report\developpement_report-develop\#PL_VERSION\PL_VERSION.bat"
     
     
    echo "A6 : modification dans le PLVERSION" >> %logs%
    setlocal enabledelayedexpansion
    if exist %PLversionREMtmp% del %PLversionREMtmp%
    for /f "delims=" %%A in ('type "%PLversion_dev%"') do (
     
     
    set "strl=%%A"
     
    echo !str1! >> %logs%
     
    echo %%A >> %logs%
     
    echo "on entre dans le if" >> %logs%
     
    set str=%str:%versionOld%=%versionNew%% >> %logs%
     
    REM IF "%versionOld%" in %%A 
    	REM echo "oui : %%A" >> %logs%
    REM else
    	REM echo "non : %%A" >> %logs%
    echo %str% >> %logs%
    		)
     
    endlocal
     
    goto :eof

  17. #17
    Membre éprouvé
    Homme Profil pro
    Développeur .NET en devenir
    Inscrit en
    Août 2017
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    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 : 546
    Points : 1 084
    Points
    1 084
    Par défaut
    Déjà il y a un sérieux problème avec le nom que tu as donné aux variables, une fois il s'agit de strl après il s'agit de str1, et pour finir il y a str
    La seule variable réellement définie par quelque chose est strl

    Petite remarque qui n'a rien à voir avec tes problèmes : pas besoin de rediriger la sortie d'une commande SET vers un fichier log, car celle-ci ne produit aucune sortie.

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

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Points : 336
    Points
    336
    Par défaut
    Désolé.
    Une fois la tête dans le guidon, je n'ai pas vu que je partais en vrille.
    Merci.

    Mon
    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    set strl=%strl:%versionOld%=%versionNew%%
    me renvoie toujours la dernière ligne.

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

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Points : 336
    Points
    336
    Par défaut
    Du coup.
    Je retombe un peu sur mes pattes :
    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ECHO.!strl! | FIND /I "%versionOld%" > Nul && ( 
      Echo "%versionOld%" existe >> %logs%
    ) || (
      Echo "%versionOld%" n'existe pas >> %logs%
    )

  20. #20
    Membre éprouvé
    Homme Profil pro
    Développeur .NET en devenir
    Inscrit en
    Août 2017
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    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 : 546
    Points : 1 084
    Points
    1 084
    Par défaut
    La variable strl est définie à l'intérieur d'un bloc (=une ou plusieurs commandes entre parenthèses), il faut donc la retarder :

    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    set "strl=!strl:%versionOld%=%versionNew%!"

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 12
    Dernier message: 11/06/2012, 19h14
  2. Modifier une chaine de caractère
    Par sulli7086 dans le forum Excel
    Réponses: 6
    Dernier message: 18/02/2010, 09h56
  3. Fonction qui modifie une chaine de caractère
    Par condor_01 dans le forum Débuter
    Réponses: 7
    Dernier message: 05/11/2007, 18h32
  4. Modifier une chaine de caractères lue dans une DB
    Par shinryu69 dans le forum Langage
    Réponses: 4
    Dernier message: 31/10/2006, 13h40
  5. Modifier une chaine de caractères ?
    Par Arkadius dans le forum Oracle
    Réponses: 2
    Dernier message: 13/04/2006, 16h21

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