Page 1 sur 1

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

Posté : 08 mai 2020 15:39
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.

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

Posté : 09 mai 2020 12:27
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

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

Posté : 09 mai 2020 13:30
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.

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

Posté : 09 mai 2020 13:38
par barnabe0057
Je vais voir ce que je peux faire.

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

Posté : 10 mai 2020 13:34
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.