Bonjour je cherche une âme charitable qui m'aiderais à résoudre mon problème.

J'ai un code pour un Bat que j'ai trouvé sur un forum, merci à l'auteur si c'est ici. ( Je ne retrouve plus où c'était )

Le BAT cherche et change du texte dans un fichier, cela fonctionne très bien lorsque le BAT et le fichier à modifier sont dans le même dossier.
Maintenant j'aimerais qu'il fasse de même mais dans des sous-dossiers différents où il y a d'autres fichiers à modifier. Les fichiers ont le même nom, mais ont des textes différents.

Dossier de base ( localisation du BAT ) / Sous-dossier A / Sous-dossier AA ( localisation du fichier à modifier )
---------------------------------------------------------------/ Sous-dossier AB ( localisation du fichier à modifier )
---------------------------------------------------------------/ Sous-dossier AC ( localisation du fichier à modifier )
--------------------------------------------/ Sous-dossier B / Sous-dossier BA ( localisation du fichier à modifier )
---------------------------------------------------------------/ Sous-dossier BB ( localisation du fichier à modifier )
---------------------------------------------------------------/ Sous-dossier BC ( localisation du fichier à modifier )
Etc.....

Je pense qu'il faut sans doute une boucle, alors sur la ligne 40 j'ai essayé ça et forcément cela ne marche pas ( désolé!! je suis vraiment nul ):
Code Batch : Sélectionner tout - Visualiser dans une fenêtre à part
For /R %~dp0 %%f in (*.txt) do  (
Je pense qu'il me manque l'autre parenthèse ")" mais je ne sais pas où la mettre et je ne sais même pas si cela a du sens.

Je vous remercie d'avance pour votre aide

GildasB

Voici le code du BAT :

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
@echo off
setlocal EnableDelayedExpansion
echo.
 
REM Fichier de configuration
set file_tmp=infos_temporaire.ini
 
::::::::::::: VARIABLES A MODIFIER :::::::::::::
 
    REM Correspond au nom de fichier avec une ligne à modifier (pas de guillemets)
    set file=infos_Frequences.txt
 
    REM Correspond à la ligne recherchée & Remplacée 1
    set file_line_regex[1]= frequency : 0.1
    set file_line_replace[1]= frequency : 0.05     
 
    REM Correspond à la ligne recherchée & Remplacée 2
    set file_line_regex[2]= frequency : 0.4
    set file_line_replace[2]= frequency : 0.1	
 
	REM Correspond à la ligne recherchée & Remplacée 3
    set file_line_regex[3]= frequency : 0.5    
    set file_line_replace[3]= frequency : 0.2	
 
	REM Correspond à la ligne recherchée & Remplacée 4
    set file_line_regex[4]= frequency : 0.7
    set file_line_replace[4]= frequency : 0.3
 
	REM Correspond à la ligne recherchée & Remplacée 5
    set file_line_regex[5]= frequency : 1
    set file_line_replace[5]= frequency : 0.35
 
::::::::::::: VARIABLES A MODIFIER :::::::::::::    
 
	REM Version dans même dossier fonctionnelle:
	REM cd /d %~dp0
 
 
    REM Version dans l'ensemble des dossiers et sous dossiers :	
	For /R %~dp0 %%f in (*.txt) do  (
 
	Rem Code original :
 
If not exist "%file%" (goto :file_notfound)
If exist "%file_tmp%" (del /F /Q "%file_tmp%")
 
For /f "delims=" %%i in ('type "%file%"') do (
    call :replace "%%i"
)
 
del /F /Q "%file%"
rename "%file_tmp%" "%file%"
echo Modifications finies !
goto :quit
 
:replace
set line=%*
set "b_replace=False"
For /L %%j in (1,1,5) do (
    echo !line! | findstr /RC:"!file_line_regex[%%j]!" >nul
    If !errorlevel! EQU 0 (
        set "b_replace=True"
        echo !file_line_replace[%%j]!>>"%file_tmp%"
    )
)
if "%b_replace%"=="False" (echo !line:~1,-1!>>"%file_tmp%")
GOTO:EOF
 
:file_notfound
echo Le fichier "%file%" est introuvable ^^!
 
:quit
echo.
pause>nul | echo Appuyez sur une touche pour quitter le script...
exit