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.
Rechercher un ligne contenant une chaîne de caractère et la remplacer
Modérateur : WIN32-[GG]
-
- SuperBatcher
- Messages : 105
- Enregistré le : 24 janv. 2017 13:41
Re: Rechercher un ligne contenant une chaîne de caractère et la remplacer
Bonjour,
Essaie comme ça :
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
Bonjour,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
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.
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.
-
- SuperBatcher
- Messages : 105
- Enregistré le : 24 janv. 2017 13:41
Re: Rechercher un ligne contenant une chaîne de caractère et la remplacer
Je vais voir ce que je peux faire.
Re: Rechercher un ligne contenant une chaîne de caractère et la remplacer
Bonjour @barnabe0057,
Je te remercie de l'intérêt que tu portes à ma demande.
Bon Dimanche.