Demande d'aide pour editer un fichier .ini en batch

Une difficulté, une précision posez vos questions

Modérateur : WIN32-[GG]

Répondre
Abnegatus
Batcheur occasionnel
Messages : 4
Enregistré le : 17 août 2010 14:49

Demande d'aide pour editer un fichier .ini en batch

Message par Abnegatus »

Bonjour a tous,

J'ai cherche un peu partout mais la reponse est quasiment a chaque fois faut faire du VBS.
Je vous explique mon cas,
Je cherche a editer un fichier .ini (225 Lignes environ) et remplacer une partie du contenu, un morceau correspondant aux parametres d'imprimantes, actuellement le morceau en question est de taille variable.
Ce qui precede est fixe, ce qui suit est variable aussi mais doit etre maintenu en l'etat, cepandant ce dernier "bloc" contient une balise ([NODE]).
J'avais un espoir avec edlin mais impossible de l'utiliser en ligne de commande (je ne sais si je suis passe a cote de la bonne methode ou si c'est impossible en ligne de commande), et vu que la modif va concerner environ 2000 postes je n'envisage pas de le faire a la main :)

Je vous colle un morceau du .ini

"Ce bloc est fixe"
IMPR95L_ext=IMPR15L,IBMR1
IMPR96L_ext=IMPR16L,IBMR1
IMPR97L_ext=IMPR17L,IBMR1
IMPR98L_ext=IMPR18L,IBMR1
IMPR99L_ext=IMPR19L,IBMR1





"Ceci est a modifier par un bloc de ma conception"
SPL_ext=SPL,GDI
IMPR00L_def=IMPR00L,winspool,\\232-0\impr00l
IMPR02C_def=IMPR02C,TTY,\\232-2\impr02c
IMPR04C_def=IMPR04C,TTY,\\232-4\impr04c
IMPR07C_def=IMPR07C,TTY,\\232-7\impr07c
IMPR08C_def=IMPR08C,TTY,\\232-8\impr08c
IMPR09C_def=IMPR09C,TTY,\\232-9\impr09c
CENTRAL_ext=CENTRAL,IBMR1
CENTRAL_def=CENTRAL,HPPCL,\\SYSTEM\CENTRAL
IMPR05C_def=IMPR05C,TTY,\\232-5\impr05c
IMPR01L_def=impr01l,winspool,\\232-1\impr01l
SPL_LFBM=hCopy
SPL_def=.




"Ce bloc est a garder tel qu'existant dans le .ini d'origine"
[NODE]
Node_LOCAL=c:
Node_c=c:
Node_d=c:


Auriez vous une idée ou connaissez vous un editeur de texte en ligne de commande qui me permette de faire cela ?!?

Merci pour votre aide.
Laddy
SuperBatcher
Messages : 190
Enregistré le : 04 juil. 2008 13:40

Re: Demande d'aide pour editer un fichier .ini en batch

Message par Laddy »

Bonjour
regarde du coté de la commande externe sed.exe : remplacer une chaine de caractère
Envie de partager vos programmes :
Poster vos codes sur BatchClipboad.info
DarkBatcher
King Of Batch
Messages : 66
Enregistré le : 06 juil. 2010 17:37
Contact :

Re: Demande d'aide pour editer un fichier .ini en batch

Message par DarkBatcher »

Bonjour,

Moi j'ai une solution toute simple :

Dans le même dossier que ton batch le fichier ini que tu as corrigé puis tu fais un copy:

Code : Tout sélectionner

::en copiant le fichier que tu as corrigé vers le fichier d'origine tu remplace le fichier ini d'origine
copy fichiercorrigé.ini monchemin\monfichier.ini
Ce forum vous à aidé? Faites le vivre en vous connectant régulièrement et en répondant au questions posées sur le forum si vous avez une solution
Abnegatus
Batcheur occasionnel
Messages : 4
Enregistré le : 17 août 2010 14:49

Re: Demande d'aide pour editer un fichier .ini en batch

Message par Abnegatus »

DarkBatcher a écrit :Bonjour,

Moi j'ai une solution toute simple :

Dans le même dossier que ton batch le fichier ini que tu as corrigé puis tu fais un copy:

Code : Tout sélectionner

::en copiant le fichier que tu as corrigé vers le fichier d'origine tu remplace le fichier ini d'origine
copy fichiercorrigé.ini monchemin\monfichier.ini
Je ne comprends pas ce que tu sous entend.

@laddy, j'ai entendu parler de cela oui, pas encore regarde en profondeur les possibilites offertes par sed, je dois dire que j'esperais rester sur du batch "pur".
Connais tu un bon tuto sur sed, ce que j'ai pu trouve est du genre leger voir perime (lien mort depuis longtemps).

J'ai disons un "debut" avec quelque chose comme :
echo 1,108 D | edlin c:\truc.ini
En ligne a ligne c'est parfait (il cree meme un .bak de lui meme) mais une fois dans un batch, a l'execution le poste bloque (ntvdm passe a 100% d'utilisation processeur).
DarkBatcher
King Of Batch
Messages : 66
Enregistré le : 06 juil. 2010 17:37
Contact :

Re: Demande d'aide pour editer un fichier .ini en batch

Message par DarkBatcher »

Je sous entend que ça n'à pas de sens de vouloir éditer un .ini depuis un batch car c'est une pure perte de temps. Je te propose de remplacer le fichier par un autre fichier que tu as déjà corige.

Ce que je propose c'est:
- tu met le fichier ini avec un bloc de ta conception dans le meme répertoire que ton batch.
-puis dans ton batch de mettre une ligne qui copie le fichier de ta conception vers le fichier ini que tu veux modifier.
-le fichier que tu veut modifier sera remplacer par le fichier ini de ta conception.

Autrement dit, en une seule ligne de code:

Code : Tout sélectionner

Copy fichiercorrigé.ini lecteur:\chemin\fichieramodifier.ini
Je peux pas faire plus clair .

Et en plus tu reste sur du batch pur
Ce forum vous à aidé? Faites le vivre en vous connectant régulièrement et en répondant au questions posées sur le forum si vous avez une solution
Abnegatus
Batcheur occasionnel
Messages : 4
Enregistré le : 17 août 2010 14:49

Re: Demande d'aide pour editer un fichier .ini en batch

Message par Abnegatus »

Ok, je comprends, mais ca n'est pas si simple.

Un bloc du fichier .ini original doit etre conserve, et il est different sur chaque poste (ca contient les parametrage de l'utilisateur), en somme impossible d'ecraser par un preecrit, n'aurais pas eu a me casser la tete sinon :)
DarkBatcher
King Of Batch
Messages : 66
Enregistré le : 06 juil. 2010 17:37
Contact :

Re: Demande d'aide pour editer un fichier .ini en batch

Message par DarkBatcher »

Le bloc que tu ne dois pas modifier est avant ou après le bloc que tu dois modifier?
Ce forum vous à aidé? Faites le vivre en vous connectant régulièrement et en répondant au questions posées sur le forum si vous avez une solution
Abnegatus
Batcheur occasionnel
Messages : 4
Enregistré le : 17 août 2010 14:49

Re: Demande d'aide pour editer un fichier .ini en batch

Message par Abnegatus »

Cf mon premier post, il est a la fin.

Ca donne :
Bloc fixe
.
.
Bloc a modifier
.
.
Bloc a garder en l'etat.

Je precise de plus que le bloc a modifier est de taille variable (ca n'aide pas).
Par contre le bloc a garder commence par une balise : [NODE]
Avatar du membre
Dodoche28
King Of Batch
Messages : 84
Enregistré le : 18 août 2010 17:07
Contact :

Re: Demande d'aide pour editer un fichier .ini en batch

Message par Dodoche28 »

Bonjours tous le monde :)

Pour commencer je pense qu'il faudrait procédé procédé de la sort:

-ouvrir le fichier(fichier.INI) dans le bat et donc récupérer les données
-ensuite prendre toutes les données a partir de la fin de la ligne du bloc stable et les mettre dans un fichier(Temp.txt)
-ouvrir le fichier Temp.txt dans le bat et donc récupérer les données
-chercher dans le fichier Temp.txt la ligne avec le mot [NODE] et mettre la ligne avec le mots dans une variable(variable=Ligne)
-redéfinir la ligne: ligne-1
-copier de la ligne de la fin du bloc stable à la ligne(Ligne) et le mettre dans un fichier (Imprimante.txt)
-ensuite remplacer tous se qui à a faire dans Imprimante.txt ^^
-puis prendre le bloc stable dans fichier.INI et le mettre dans un fichier(FINI.txt)
-prendre le texte changer dans Imprimante.txt et le mettre dans le fichier(FINI.txt)
-prendre le texte a partir de la ligne(variable=Ligne) jusqu'à la fin et le mettre dans le fichier(FINI.txt)
-Pour finir renommer le fichier(FINI.txt) en fichier.INI et le remplacer.
- Supprimer les fichier temporaire.

Voilà j'espère vous avoir bien aider à commencer...
N'oublier pas de mettre [Résolu]. Le procéder est mis dans une annonce!
DarkBatcher
King Of Batch
Messages : 66
Enregistré le : 06 juil. 2010 17:37
Contact :

Re: Demande d'aide pour editer un fichier .ini en batch

Message par DarkBatcher »

j'ai un code. tu met le bloc corrigé dans le même répertoire que le batch dans le fichier bloc.ini par ex (fichier.ini est le fichier à éditer) :

Code : Tout sélectionner

@echo off
rem édition d'un fichier ini
Rem darkbatcher & dodoche28
Rem darkbatcher@gmail.com
Rem ----------------- 
@echo off
setlocal enabledelayedexpansion
set fichieramodifier=%1%
set bloc=%2%
set balise=%3%
rem on lit le ini qui n'est pas modifié
For /f %%À in (!fichieramodifier!) do (
Rem si %%A et égal à "[node]" on met var à 1
If %%A%="[node]" set /a var=1
Set ligne=%%A%
If "!var!"="1" echo !ligne!>>tmp.txt
)
Rem on à donc tout  le bloc node dans tmp.txt
For /f %%A in (!fichieramodifier!) do (
Rem si %%A% contient le nom du bloc, on quitte la boucle, sinon on écrit %%A dans fichiercorrige.ini
If "%%A%"="!balise!" goto suite
Set ligne=%%A%
Echo !ligne!>>fichiercorrige.ini
)
:suite
Rem on a le copié fichier.ini dans fichiercorrige.ini jusqu'au bloc que l'on veut modifier
For /f %%A% in (!bloc!) do (
Rem on copie la totalité du bloc corrigé à la suite de fichiercorrige.ini 
Set lignes=%%A%
Echo !lignes!>>fichiercorrige.ini
)
Rem on a le le début du fichier ini et le bloc corrigé dans fichiercorrige.ini
For /f %%A in (tmp.txt) do(
Rem on copie le bloc stable copié dans tmp.txt
Set ligne=%%A%
Echo !ligne!>>fichiercorrige.ini
)
Rem on a maintenant dans le fichier fichiercorrige.ini le début du ini plus le bloc corrigé et le bloc stable, il ne reste plus qu'a le copier
Copy fichiercorrige.ini !fichieramodifier!
Del tmp.txt
Del fichiercorrige.ini
Ce forum vous à aidé? Faites le vivre en vous connectant régulièrement et en répondant au questions posées sur le forum si vous avez une solution
Répondre