Rechercher un ligne contenant une chaîne de caractère et la remplacer

Une difficulté, une précision posez vos questions

Modérateur : WIN32-[GG]

Répondre
oryandco
Batcheur occasionnel
Messages : 3
Enregistré le : 08 mai 2020 15:29

Rechercher un ligne contenant une chaîne de caractère et la remplacer

Message par oryandco »

Bonjour,

Je suis près du but mais je coince.
Mon objectif est le suivant. Chercher dans un fichier .ini la chaîne de caractère "publicAddr".
Je dois trouver une ligne qui contient :"publicAddr=X" X étant une adresse ip qui varie et remplacer cette ligne par "publicAddr=Y". Y étnt la variable ADRIP que j'arrive à récupérer.
J'ai essayé ce code mais ça ne fonctionne pas.
Je récupère bien l'adresse ip public qu'il va me falloir mettre dans le fichier cible mais c'est tout. Le remplacement ne se fait pas. Mon fichier cible microsip.txt reste vide.....

:: Lecture ip public active
@echo off
for /F "delims=," %%i in ('ipconfig /all^|find "Adresse IPv4. . . . . . . . . . . . . .: 10.221."') do set ADRIP=%%i
set ADRIP=%ADRIP:~44,13%
echo %ADRIP%
pause
:: Commande de renommage
echo off

set FichierATraiter=C:\0Perso\@contract manager\Programmation\MicroSIP.ini
set FichierDeSortie=C:\0Perso\@contract manager\Programmation\microsip.txt
set Source=publicAddr
set Modifie=%ADRIP%

Setlocal enableextensions enabledelayedexpansion
for /f "usebackq delims=*" %%T in ("%FichierATraiter%") do (
Set TempVar=%%T
echo %%T
pause
set TempVar=!TempVar:%Source%=%Modifie%!
echo $TempVar$
echo !TempVar!>>"%FichierDeSortie%"
)
endlocal

Merci d'avance de votre aide.
barnabe0057
SuperBatcher
Messages : 105
Enregistré le : 24 janv. 2017 13:41

Re: Rechercher un ligne contenant une chaîne de caractère et la remplacer

Message par barnabe0057 »

Bonjour,

Essaie comme ça :

Code : Tout sélectionner

@echo off
setlocal enableextensions
chcp 1252 >nul

cd /d C:\0Perso\@contract manager\Programmation || exit /b 1

:: Lecture ip public active

set "ADRIP="

for /f "tokens=1 delims={, " %%A in ('wmic nicconfig get IPAddress ^| find "."') do if not defined ADRIP (set ADRIP=%%~A)

:: Commande de renommage

for /f "tokens=1,2 delims=]" %%A in ('type MicroSIP.ini ^| find /n /v ""') do (

	(echo.%%B | findstr /i "publicAddr" >nul && echo publicAddr=%ADRIP% || echo.%%B) >> microsip.txt

)

notepad microsip.txt
exit
oryandco
Batcheur occasionnel
Messages : 3
Enregistré le : 08 mai 2020 15:29

Re: Rechercher un ligne contenant une chaîne de caractère et la remplacer

Message par oryandco »

barnabe0057 a écrit : 09 mai 2020 12:27 Bonjour,

Essaie comme ça :

Code : Tout sélectionner

@echo off
setlocal enableextensions
chcp 1252 >nul

cd /d C:\0Perso\@contract manager\Programmation || exit /b 1

:: Lecture ip public active

set "ADRIP="

for /f "tokens=1 delims={, " %%A in ('wmic nicconfig get IPAddress ^| find "."') do if not defined ADRIP (set ADRIP=%%~A)

:: Commande de renommage

for /f "tokens=1,2 delims=]" %%A in ('type MicroSIP.ini ^| find /n /v ""') do (

	(echo.%%B | findstr /i "publicAddr" >nul && echo publicAddr=%ADRIP% || echo.%%B) >> microsip.txt

)

notepad microsip.txt
exit
Bonjour,

Merci beaucoup @barnabe0057 pour ta réponse qui effectivement est bien plus élégante et fiable que la mienne notamment pour récupérer l'@ip. :oops:
Cela semble fonctionner (pour l'instant je simule dans un répertoire de travail). En revanche cela supprime le caractère ] du fichier et pas le [, c'est moche car il est utilisé dans le point ini pour délimiter des [blocs de paramètres] comme cela. Du coup l'appli ne trouve pas ses petits car elle doit faire appel à ces blocs pour charger les paramètres.
La création du .txt est assez longue (qqs sec) mais ça fonctionne.
barnabe0057
SuperBatcher
Messages : 105
Enregistré le : 24 janv. 2017 13:41

Re: Rechercher un ligne contenant une chaîne de caractère et la remplacer

Message par barnabe0057 »

Je vais voir ce que je peux faire.
oryandco
Batcheur occasionnel
Messages : 3
Enregistré le : 08 mai 2020 15:29

Re: Rechercher un ligne contenant une chaîne de caractère et la remplacer

Message par oryandco »

barnabe0057 a écrit : 09 mai 2020 13:38 Je vais voir ce que je peux faire.
Bonjour @barnabe0057,

Je te remercie de l'intérêt que tu portes à ma demande.
Bon Dimanche.
Répondre