Lire toutes les lignes entre 2 sections dans un fichier ini.
Pour l'instant, j'ai trouvé comment lire la valeur précise d'une entrée dans
une section.
http://www.motobit.com/tips/detpg_asp-vbs-read-write-ini-files/
Mais, maintenant, j'ai besoin de lire toute les lignes d'une section
précise.
Je sais que ça ne répond pas directement au besoin (Gilles Laurent a posté ce matin une réponse qui m'a l'air impeccable), mais voici un bout de code en PowerShell écrit par Bruce Payette qui permet d'enregistrer les valeurs d'un fichier INI dans une table de hashage:
Les sections du fichier sont des clés de la table de hashage $system:
PS> $system.keys 386Enh mci drivers
... et les valeurs de chaque section sont stockés dans une sous-table de hashage:
PS> $system.drivers
Name Value ---- ----- wave mmdrv.dll timer timer.drv
PS> $system.drivers.wave mmdrv.dll
Jacques
"Pasobo" a écrit dans le message de news: 4501e633$0$8495$
Bonsoir,
J'ai un petit besoin :
Lire toutes les lignes entre 2 sections dans un fichier ini.
Pour l'instant, j'ai trouvé comment lire la valeur précise d'une entrée dans une section. http://www.motobit.com/tips/detpg_asp-vbs-read-write-ini-files/ Mais, maintenant, j'ai besoin de lire toute les lignes d'une section précise.
Merci d'avance si vous avez des pistes,
Pasobo
Je sais que ça ne répond pas directement au besoin (Gilles Laurent a posté
ce matin une réponse qui m'a l'air impeccable), mais voici un bout de code
en PowerShell écrit par Bruce Payette qui permet d'enregistrer les valeurs
d'un fichier INI dans une table de hashage:
Les sections du fichier sont des clés de la table de hashage $system:
PS> $system.keys
386Enh
mci
drivers
... et les valeurs de chaque section sont stockés dans une sous-table de
hashage:
PS> $system.drivers
Name Value
---- -----
wave mmdrv.dll
timer timer.drv
PS> $system.drivers.wave
mmdrv.dll
Jacques
"Pasobo" <je_veux_pas_de_spam@free.fr> a écrit dans le message de news:
4501e633$0$8495$626a54ce@news.free.fr...
Bonsoir,
J'ai un petit besoin :
Lire toutes les lignes entre 2 sections dans un fichier ini.
Pour l'instant, j'ai trouvé comment lire la valeur précise d'une entrée
dans une section.
http://www.motobit.com/tips/detpg_asp-vbs-read-write-ini-files/
Mais, maintenant, j'ai besoin de lire toute les lignes d'une section
précise.
Je sais que ça ne répond pas directement au besoin (Gilles Laurent a posté ce matin une réponse qui m'a l'air impeccable), mais voici un bout de code en PowerShell écrit par Bruce Payette qui permet d'enregistrer les valeurs d'un fichier INI dans une table de hashage:
Les sections du fichier sont des clés de la table de hashage $system:
PS> $system.keys 386Enh mci drivers
... et les valeurs de chaque section sont stockés dans une sous-table de hashage:
PS> $system.drivers
Name Value ---- ----- wave mmdrv.dll timer timer.drv
PS> $system.drivers.wave mmdrv.dll
Jacques
"Pasobo" a écrit dans le message de news: 4501e633$0$8495$
Bonsoir,
J'ai un petit besoin :
Lire toutes les lignes entre 2 sections dans un fichier ini.
Pour l'instant, j'ai trouvé comment lire la valeur précise d'une entrée dans une section. http://www.motobit.com/tips/detpg_asp-vbs-read-write-ini-files/ Mais, maintenant, j'ai besoin de lire toute les lignes d'une section précise.
Merci d'avance si vous avez des pistes,
Pasobo
Th.A.C
Bonjour,
Je viens de tester ton script,
Mais il me renvoie que la 1ère ligne de la section.
peux-tu me mettre la section complète que tu utilises, j'ai peut-être oublié un truc...
voila un exemple de fichier .ini pour lequel j'avais fait mon script ----------------------------------------------- [NVL350] # NEC VL350
;Description = Nero 6 pour NEC VL350 ;Exe = _Install_Nero6.cmd ;Chemin = Nero ;Parametre = 123456789
Nero 6 pour NEC VL350=_Install_Nero6.cmd,Nero,123456789 test="1234" test1="1234",azerty,"aaa" test3 = azertyuiop, blanc en début de ligne, test4 = " guillement sur 2eme parametre, 2eme parametre", pas de guillemet
[EVO500] # Evo 500
Nero 6 pour NEC VL350=_Install_Nero6.cmd,Nero,123456789 Media Player Classic=_Install (6.4.8.7 fr).cmd, Media Player Classic -----------------------------------------------
A quoi sert la fonction NettoieLigne ?
a enlever les espaces/tabulations inutiles en début et fin de ligne, et ne prend pas la ligne en compte si c'est un commentaire dès le début.
Thierry
Bonjour,
Je viens de tester ton script,
Mais il me renvoie que la 1ère ligne de la section.
peux-tu me mettre la section complète que tu utilises, j'ai peut-être
oublié un truc...
voila un exemple de fichier .ini pour lequel j'avais fait mon script
-----------------------------------------------
[NVL350] # NEC VL350
;Description = Nero 6 pour NEC VL350
;Exe = _Install_Nero6.cmd
;Chemin = Nero
;Parametre = 123456789
Nero 6 pour NEC VL350=_Install_Nero6.cmd,Nero,123456789
test="1234"
test1="1234",azerty,"aaa"
test3 = azertyuiop, blanc en début de ligne,
test4 = " guillement sur 2eme parametre, 2eme parametre", pas de guillemet
[EVO500] # Evo 500
Nero 6 pour NEC VL350=_Install_Nero6.cmd,Nero,123456789
Media Player Classic=_Install (6.4.8.7 fr).cmd, Media Player Classic
-----------------------------------------------
A quoi sert la fonction NettoieLigne ?
a enlever les espaces/tabulations inutiles en début et fin de ligne, et
ne prend pas la ligne en compte si c'est un commentaire dès le début.
Mais il me renvoie que la 1ère ligne de la section.
peux-tu me mettre la section complète que tu utilises, j'ai peut-être oublié un truc...
voila un exemple de fichier .ini pour lequel j'avais fait mon script ----------------------------------------------- [NVL350] # NEC VL350
;Description = Nero 6 pour NEC VL350 ;Exe = _Install_Nero6.cmd ;Chemin = Nero ;Parametre = 123456789
Nero 6 pour NEC VL350=_Install_Nero6.cmd,Nero,123456789 test="1234" test1="1234",azerty,"aaa" test3 = azertyuiop, blanc en début de ligne, test4 = " guillement sur 2eme parametre, 2eme parametre", pas de guillemet
[EVO500] # Evo 500
Nero 6 pour NEC VL350=_Install_Nero6.cmd,Nero,123456789 Media Player Classic=_Install (6.4.8.7 fr).cmd, Media Player Classic -----------------------------------------------
A quoi sert la fonction NettoieLigne ?
a enlever les espaces/tabulations inutiles en début et fin de ligne, et ne prend pas la ligne en compte si c'est un commentaire dès le début.
Thierry
pasoboiv
Merci beaucoup pour le script Laurent,
Et encore merci à tous ceux qui ont bien voulu répondre.
Le script de Laurent fonctionne parfaitement et répond exactement à mon besoin.
J'essaie de le modifier pour un autre besoin de management : lire un fichier de type cfg avec des sections mais où les paramètres ne sont pas sous la forme [section] param1=valeur1 param2=valeur2
mais sous la forme [param1] valeur1 valeur2 [param2] valeur1 valeur2
Pascal
Merci beaucoup pour le script Laurent,
Et encore merci à tous ceux qui ont bien voulu répondre.
Le script de Laurent fonctionne parfaitement et répond exactement à
mon besoin.
J'essaie de le modifier pour un autre besoin de management :
lire un fichier de type cfg avec des sections
mais où les paramètres ne sont pas sous la forme
[section]
param1=valeur1
param2=valeur2
mais sous la forme
[param1]
valeur1
valeur2
[param2]
valeur1
valeur2
Et encore merci à tous ceux qui ont bien voulu répondre.
Le script de Laurent fonctionne parfaitement et répond exactement à mon besoin.
J'essaie de le modifier pour un autre besoin de management : lire un fichier de type cfg avec des sections mais où les paramètres ne sont pas sous la forme [section] param1=valeur1 param2=valeur2
mais sous la forme [param1] valeur1 valeur2 [param2] valeur1 valeur2
Pascal
Michel Claveau
Re !
C'est peut-être parce que le nom de ta section contient des espaces.
Dans ce cas, il faut modifier le batch comme suit : @echo off setlocal
set ini=odbc.ini set section=[dBase Files]
set flagúUX FOR /F "tokens=*" %%a IN (%ini%) DO CALL :SUB %%a endlocal goto :EOF
:SUB set tmp=%*XX set debut=%tmp:~0,1% IF /I %debut% EQU [ CALL :BOF %* IF /I %flag% EQU VRAI echo %* goto :EOF
:BOF set flagúUX if /I "%*" EQU "%section%" set flag=VRAI goto :EOF
Sinon, et si tu as un exemple de fichier .ini de moins de 19 ko, tu peux le mettre en pièce jointe, en indiquant quelle section tu veux extraire. Comme ça, on pourra tester.
-- @-salutations
Michel Claveau
Re !
C'est peut-être parce que le nom de ta section contient des espaces.
Dans ce cas, il faut modifier le batch comme suit :
@echo off
setlocal
set ini=odbc.ini
set section=[dBase Files]
set flagúUX
FOR /F "tokens=*" %%a IN (%ini%) DO CALL :SUB %%a
endlocal
goto :EOF
:SUB
set tmp=%*XX
set debut=%tmp:~0,1%
IF /I %debut% EQU [ CALL :BOF %*
IF /I %flag% EQU VRAI echo %*
goto :EOF
:BOF
set flagúUX
if /I "%*" EQU "%section%" set flag=VRAI
goto :EOF
Sinon, et si tu as un exemple de fichier .ini de moins de 19 ko, tu
peux le mettre en pièce jointe, en indiquant quelle section tu veux
extraire. Comme ça, on pourra tester.
C'est peut-être parce que le nom de ta section contient des espaces.
Dans ce cas, il faut modifier le batch comme suit : @echo off setlocal
set ini=odbc.ini set section=[dBase Files]
set flagúUX FOR /F "tokens=*" %%a IN (%ini%) DO CALL :SUB %%a endlocal goto :EOF
:SUB set tmp=%*XX set debut=%tmp:~0,1% IF /I %debut% EQU [ CALL :BOF %* IF /I %flag% EQU VRAI echo %* goto :EOF
:BOF set flagúUX if /I "%*" EQU "%section%" set flag=VRAI goto :EOF
Sinon, et si tu as un exemple de fichier .ini de moins de 19 ko, tu peux le mettre en pièce jointe, en indiquant quelle section tu veux extraire. Comme ça, on pourra tester.
-- @-salutations
Michel Claveau
Pasobo
J'ai testé à partir de ton .ini
Il fonctionne à merveille ton vbs
peux-tu me mettre la section complète que tu utilises, j'ai peut-être oublié un truc... Voilà un exemple de fichier .ini que je veux utiliser