Bonjour,
Je cherche à lire le contenu d'un fichier ini, et attribuer les valeurs du résultat de ma recherche à des variables.
Voici le contenu de test.ini
J'ai ensuite 2 fichiers cmd
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 [DIRLSVC] F2=%ProgramFiles(x86)%\App F2REL=%F2%\tst [DIRAPP] F2=C:\APP\newclient [LSVC] SUFFIX_SERVICE=tstesp
read_ini.cmd
Code : 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 @setlocal enableextensions enabledelayedexpansion @echo off set file=%1 set area=[%2] set key=%3 set currarea= for /f "delims=" %%a in (!file!) do ( set ln=%%a if "x!ln:~0,1!"=="x[" ( set currarea=!ln! ) else ( for /f "tokens=1,2 delims==" %%b in ("!ln!") do ( set currkey=%%b set currval=%%c if "x!area!"=="x!currarea!" if "x!key!"=="x!currkey!" ( echo !currval! ) ) ) ) endlocal
et test.cmd
La variable F2 devrait contenir la valeur de %ProgramFiles(x86)% contenue dans l'ini, qui devrait être remplacée par la variable d'environnement C:\Program Files (x86).
Code : 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 for /f "delims=" %%a in ('call read_ini.cmd test.ini DIRLSVC F2') do ( set F2=%%a ) for /f "delims=" %%a in ('call read_ini.cmd test.ini DIRLSVC F2REL') do ( set F2REL=%%a ) for /f "delims=" %%a in ('call read_ini.cmd test.ini DIRAPP F2') do ( set LOCALF2=%%a ) for /f "delims=" %%a in ('call read_ini.cmd test.ini LSVC SUFFIX_SERVICE') do ( set SUFFIX_SERVICE=%%a ) SET LocalDBInstall=%F2%\%SUFFIX_SERVICE% SET LocalClientInstall=%LOCALF2%\%SUFFIX_SERVICE%
Malheureusement, quand je fais un echo de F2, j'obtiens %ProgramFiles(x86)% et pas C:\Program Files (x86)...
De même, quand je fais un echo de LocalDBInstall, j'obtiens %ProgramFiles(x86)%\tstesp, et je voudrais avoir C:\Program Files (x86)\tstesp
Comment faire pour que F2 ait comme valeur non pas la variable (%%) , mais la valeur de celle-ci?
Partager