recupere des variables dans un .ini (debutant) - Shell/Batch - Programmation
Marsh Posté le 31-07-2004 à 14:50:35
je ne saurais trop de conseiller d'utiliser un vrai language pour faire des scripts, que ce soir du perl, du python, un truc de ce genre
le batch c tellement naze et mal foutu
Marsh Posté le 31-07-2004 à 15:38:29
bon Ok, à la limite un script visual basic ou quelque chose comme çà; mais pour ma soluce ?
Marsh Posté le 02-08-2004 à 13:04:23
bon j'arrive a afficher avec :
grep -A 5 -c [SuperDat-IA32] update.ini | find "EngineVersion"
ca m'affiche donc par exemple :
Engineversion=4321
Mais j'aimerai que la variable Engineversion prenne cette valeur, pas que ca affiche juste !!! Quelqu'un ???
Marsh Posté le 03-08-2004 à 11:50:47
@echo off
set inifile=%1
set flag=0
set section=%2
set variable=%3
call :GETVALUE %section% %variable%
goto EXIT
:GETVALUE
FOR /F "eol=; tokens=1-2 delims= " %%i in (%inifile%) do (
set line=%%i
call :PROCESSLINE %1 %2
)
goto EXIT
:PROCESSLINE
if "%flag%" EQU "1" call :PROCESSVAR %2
if "%line%" EQU "[%1]" set flag=1
goto EXIT
:PROCESSVAR
echo %line% > temp.txt
FOR /F "usebackq tokens=1-2 delims==" %%i in (temp.txt) DO (
if "%%i" EQU "%1" (
set %%i=%%j
set flag=0
)
)
del temp.txt
goto EXIT
:EXIT
Marsh Posté le 03-08-2004 à 11:52:59
tu paste ça dans un .bat
le .bat prend 3 parametres : nom fichier .ini, nom section, nom variable
ex: mybat.bat myini.ini ZIP FileSize
tu auras la valeur de FileSize de la section [ZIP] dans la variable du meme nom :
C:\>set FileSize
FileSize=3960397
Marsh Posté le 04-08-2004 à 07:53:19
Une chose a dire >
un GRAND merci, ca marche impeccable (j avais juste un probleme au debut avec les retour chariot en fin de ligne, une fois corrige c tout bon)
Vraiement bravo pour ce beau boulot
Marsh Posté le 09-08-2004 à 19:56:44
argg non j'ai un probleme :
tout marche impeccable sur windows2000.
Mais mon batch doit etre implemente sur du NT4, qui ne reconnait pas la commande for avec "usebackq"
Y-a-t-il un moyen de faire fonctionner sans usebackq ? Mes tentatives se sont soldees par des echecs
Marsh Posté le 10-08-2004 à 16:19:45
iop iop...oki je vais revoir ma copie...je te tiens au courant...
Marsh Posté le 10-08-2004 à 22:26:48
non c'est bon je pense avoir trouvé :
pour l'adapter a NT4, virer le usebackq
et la ligne suivante, if "%%i" EQU "%1" (
remplacer le EQU par ==
voilivoilou
Marsh Posté le 26-03-2011 à 23:10:15
Arrakeen a écrit : tu paste ça dans un .bat |
salut
j'ai essayé avec l'exemple suivant mybat.bat myini.ini ZIP FileSize et rien m'affiche donc j'ai ajouté "echo %%i" pour que je le teste qu'il fonctionne correctement ou non
FOR /F "eol=; tokens=1-2 delims= " %%i in (%inifile%) do (
set line=%%i
echo %line%
call :PROCESSLINE %1 %2
donc c'est ce qu'il m'affiche:
MD5=5226781401669f89c572bb9c50ea8f
MD5=5226781401669f89c572bb9c50ea8f
MD5=5226781401669f89c572bb9c50ea8f
MD5=5226781401669f89c572bb9c50ea8f
MD5=5226781401669f89c572bb9c50ea8f
MD5=5226781401669f89c572bb9c50ea8f
MD5=5226781401669f89c572bb9c50ea8f
MD5=5226781401669f89c572bb9c50ea8f
MD5=5226781401669f89c572bb9c50ea8f
MD5=5226781401669f89c572bb9c50ea8f
MD5=5226781401669f89c572bb9c50ea8f
MD5=5226781401669f89c572bb9c50ea8f
MD5=5226781401669f89c572bb9c50ea8f
MD5=5226781401669f89c572bb9c50ea8f
Marsh Posté le 28-03-2011 à 13:47:16
rajoute au début du script :
setlocal ENABLEDELAYEDEXPANSION
Marsh Posté le 31-07-2004 à 12:14:15
bonjour,
je suis nul en prog.
Je dois faire un batch qui extrait des variables d'un fichier .ini:
[SuperDat-IA32]
EngineVersion=4320
DATVersion=4382
FileName=sdat4382.exe
FileSize=5614244
Checksum=9313,D945
[ZIP]
EngineVersion=0
DATVersion=4382
FileName=dat-4382.zip
FilePath=/pub/antivirus/datfiles/4.x/
FileSize=3960397
Checksum=E5AB,AE29
MD5=5226781401669f89c572bb9c50ea8f
Comme vous voyez, des champs se repetent plusieurs fois; j'aimerai recuperer :
dans la section SuperDat-IA32 => l'engine version
dans la section zip => la DAT version
et mettre tout ca dans des variables differentes (afin de comparer les versions avec celles existante sur mon server)
C'est possible de faire çà dans un batch DOS ???
Merci à tous d'avance