Trouver un string dans .ini et le remplacer [Résolu/Fermé]

Signaler
-
 BatchCestCool -
Bonjour,
cela fait un moment que je galère à faire un batch en cherchant sur les forums FR et EN.

J'aimerais créer un .bat universel qui me permet de changer une valeur dans un .ini.
Le dossier %UserProfile%\Documents\Travail\Photo\
contient plusieurs sous dossier contenant tous les deux un .ini , disons Pierre et Marcel. Mais les prénoms peuvent être différents sur un autre pc. Il s'agit d'un GUID en faites.
donc => --%UserProfile%\Documents\Travail\Photo\Pierre\fichier.ini
-----------%UserProfile%\Documents\Travail\Photo\Marcel\fichier.ini

J'aimerais changer la même valeur pour tous les .ini se trouvant dans le dossier parent , donc via une commande rentrer dans %UserProfile%\Documents\Travail\Photo\Pierre\fichier.ini ET %UserProfile%\Documents\Travail\Photo\Marcel\fichier.ini et trouver le string "monparametre=oui" pour le modifier en "monparametre=non"
et ensuite sauver le tout.


Voilà j'espère avoir été assez clair sur ma requête si vous avez des questions je laisse la page ouverte !
Merci

2 réponses

Messages postés
13523
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
13 juin 2021
4 389
Bonjour,

Voilà qui devrait convenir :

@echo off
Setlocal enableextensions enabledelayedexpansion

set racine=%UserProfile%\Documents\Travail\Photo

if not exist "%racine%" (goto :eof)

set param=monparametre^=yes
set new=monparametre^=non

if %racine:~0,2% EQU %CD:~0,2% (cd %racine%) else (cd /d %racine%)

for /f "tokens=*" %%A in ('dir /s /b /a-d "*.ini"') do (call :modification "%%A" "%%~dpA" "conf0123456.txt")

explorer /select,"%racine%"

Endlocal
exit

:modification

echo. & echo %~1
set /a action=0

for /f "usebackq tokens=*" %%B in ("%~1") do (
set /a cible=0
(echo %%B | findstr "%param%" > nul) && (set /a cible=1 & set /a action=1)
if !cible! EQU 1 (echo %new% >> "%~2\%~3") else (echo %%B >> "%~2\%~3")
)

if !action! EQU 1 (move /Y "%~2\%~3" "%~1")
if exist "%~2\%~3" (del /F /Q "%~2\%~3")

goto :eof
rem

Il y a juste à modifier les 2 lignes soulignées, en indiquant le paramètre exact.
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci


Super merci !