[Batch]Fixer une variable à partir d'un texte

Fermé
serialtueur Messages postés 49 Date d'inscription mardi 25 novembre 2008 Statut Membre Dernière intervention 22 octobre 2009 - 25 nov. 2008 à 22:07
 coco - 14 mai 2010 à 15:57
Bonjour,
Je suis en train de faire un programme en batch , mais je me suis retrouvé confronté à un problème.
Il me faudrait un fichier X (de n'importe quelle extension) qui contiennent des informations de ce genre :

---Contenu du fichier d'information
[information1] : .....
[information2] : .....

etc ...

Et il me faudrait une commande dans mon programme qui me permette de fixer, par exemple la variable "information1" a partir de la chaine de caractère qui suit "[information1] : " et une autre qui permette de la configurer, de la régler. Cette dernière étape n'étant pas absolument indispensable.

Si il n'y a pas de moyen, y en a t'il un pour fixer une variable qui soit l'intégralité du fichier X ?

18 réponses

hem ! je ne pense pas qu'il soit judicieux de mettre des fichiers entiers dans des variables d'environnement.
mais il existe quand même une solution pour fixer des var à la demande :
1.
dans information1.cmd tu mets : set information1=le texte que je veux dans ma var information 1
dans information2.cmd tu mets : set information2=un autre texte qu'il me plait de manipuler à travers un variable d'environnement
dans information3.cmd tu mets : set information3=c'est mon programme !
etc...
2. depuis ton batch principal tu fais call information1.cmd ou call information2.cmd etc...

ça répond à ta problématique ?
0
serialtueur Messages postés 49 Date d'inscription mardi 25 novembre 2008 Statut Membre Dernière intervention 22 octobre 2009 80
25 nov. 2008 à 22:33
Ouais, merci pour ta réponse, je vais essayer de faire avec. Si quelqu'un a une solution plus simple (1 seul fichier par exemple) qu'il n'hésite pas :D

Moi en fait le problème se pose pour la configuration. Il faudrait qu'a partir de mon batch principal je puisse configurer une variable qui, tant que je ne la change pas, restera toujours la meme valeur a chaque fois que j'allumerais mon prog
0
serialtueur Messages postés 49 Date d'inscription mardi 25 novembre 2008 Statut Membre Dernière intervention 22 octobre 2009 80
17 déc. 2008 à 11:13
petit up svp merci
0
SAW5 Messages postés 111 Date d'inscription vendredi 14 novembre 2008 Statut Membre Dernière intervention 6 janvier 2010 7
17 déc. 2008 à 13:04
salut,

on peut voir une partie de ton fichier et de ton batch
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
serialtueur Messages postés 49 Date d'inscription mardi 25 novembre 2008 Statut Membre Dernière intervention 22 octobre 2009 80
17 déc. 2008 à 14:45
en fait je ne cherche pas a faire ca pour un batch en particulier, mais vous etes sur qu'il n'est pas possible de faire un fichier .conf, .nfo ou n'importequoi ou il y aurait
[info1] : %var%

ou alors un fichier dont tout le contenu soit une variable, donc je peux faire un truc genre :

@echo off
if NOT EXIST var1.txt ( goto createvar1 )
"Comande pour fixer la Var1 a partir du fichier texte" <== C'est ca dont j'ai besoin !!!
echo La var 1 est %var1%
pause
exit
:createvar1
set /p vartext=Que voulez vous définir comme Var1 ?
echo>Var1.txt %vartext%
pause
exit

C'est assez clair comme ca ?

j'en profite pour dire que ce sujet se rapproche assez de celui la :
http://www.commentcamarche.net/forum/affich 2256829 batch extraction chaine de caracteres

sauf que je n'ai toujours pas compris comment ils faisait dans celui-ci
0
SAW5 Messages postés 111 Date d'inscription vendredi 14 novembre 2008 Statut Membre Dernière intervention 6 janvier 2010 7
17 déc. 2008 à 15:29
la variable ne peut contenir qu'une seule ligne du fichier et non pas tout le fichier entier..
vous avez un fichier de la forme :
[info1] : blablablablab1
[info2] : blablablablabla2
[info3] : balablablablabl3


quand l'utilisateur tape par exemple :
info1 la chaîne balablablablab1 sera redéfinite

j'ai un fichier comme ci-dessus :
je tape en invite>command info2
ça sort>définir blablablablabla2 oui ou non <OUI>
ça sort>alors:  <une autre configuration><ENTER>


le fichier devient :

[info1] : blablablablab1
[info2] : une autre configuration
[info3] : balablablablabl3


c'est ça ce que vous voulez
0
serialtueur Messages postés 49 Date d'inscription mardi 25 novembre 2008 Statut Membre Dernière intervention 22 octobre 2009 80
17 déc. 2008 à 15:34
Non c'est pas exactement ca en fait si
[info1] :
est vide, alors des les démarrage cela propose de le redéfinir.
ainsi après configuration de l'utilisateur le fichier devient :
[info1] : blablablablabnlablablablabla
et ensuite au prochain démmarage du programme celui ci détecte que la ligne apres
[info1]
est pleine, donc il en fait une variable d'environnement qu'on peut utiliser dans la suite du programme
0
serialtueur Messages postés 49 Date d'inscription mardi 25 novembre 2008 Statut Membre Dernière intervention 22 octobre 2009 80
20 déc. 2008 à 16:01
J'ai trouvé ca :

FOR /F "tokens=1,2 delims=:" %%i in (temp2.txt) do ...

mais je n'arrive pas a le configurer...

en fait je n'ai pas compris comment ca marchait j'ai l'impression que ca extrait quelque chose du fichier temp2.txt, ca devient la variable %%i mais je n'ai pas compris comment configurer tokens et delims....
0
SAW5 Messages postés 111 Date d'inscription vendredi 14 novembre 2008 Statut Membre Dernière intervention 6 janvier 2010 7
20 déc. 2008 à 17:06
FOR /F "tokens=1,2 delims=:" %%i in (temp2.txt) do Echo %%i %%j


le fichier temp2.txt ressemble à ceci :

var1 : var2
var1 : var2
0
serialtueur Messages postés 49 Date d'inscription mardi 25 novembre 2008 Statut Membre Dernière intervention 22 octobre 2009 80
20 déc. 2008 à 18:07
euh ... possible mais moi ce que j'aimerais c'est le configurer pour avoir

[var1]: blablablablabla1
[var2]:blablablablabblablabalba2

et que %%i devienne blablablablabla

comment faire ? merci
0
SAW5 Messages postés 111 Date d'inscription vendredi 14 novembre 2008 Statut Membre Dernière intervention 6 janvier 2010 7
20 déc. 2008 à 18:13
si t'as un fichier :
[var1]: blablablablabla1
[var2]:blablablablabblablabalba2 


alors utilise ceci pour afficher balabalablab : dans un batch et non pas dans le prompt ..

FOR /F "tokens=1,2 delims=:" %%i in (temp2.txt) do Echo %%j
0
serialtueur Messages postés 49 Date d'inscription mardi 25 novembre 2008 Statut Membre Dernière intervention 22 octobre 2009 80
20 déc. 2008 à 18:46
merci, pourrais tu quand meme m'expliquer en détail la commande que je puisse l'adapter a mon prog ? merci :D

et puis, plus dur, ...
Comment faire pour pouvoir modifier
[var1]:blablabla
en [var1]:blibliblibli

tout ca toujours depuis le batch principal genre avec marqué

Veuillez fixer la Var2 : //on marque quelquechose
//le programme écrit [var2]:ce qu'on a écrit dans le txt
Echo variable écrite avec succes
pause

0
SAW5 Messages postés 111 Date d'inscription vendredi 14 novembre 2008 Statut Membre Dernière intervention 6 janvier 2010 7
20 déc. 2008 à 20:19
FOR /F "tokens=1,2 delims=:" %%i in (temp2.txt) do Echo %%i %%j


ça se traduit :
liste toutes les lignes une à une du fichier temp2.txt (puisque c'est une boucle)
"tokens=1,2 delims=:" est un critère, c-à-d séparer les chaines de caractères en 2 (tokens=1,2) le séparateur étant le 2point (delims=:) ainsi on aurra 2 parties disjointes le %%i et le %%j

voila..
pour ton autre question sincerement j'ai pas compris..
0
serialtueur Messages postés 49 Date d'inscription mardi 25 novembre 2008 Statut Membre Dernière intervention 22 octobre 2009 80
21 déc. 2008 à 02:02
ben en fait ce serait modifier la variable [var1]blablablabla depuis le batch principal dans le fichier texte
0
SAW5 Messages postés 111 Date d'inscription vendredi 14 novembre 2008 Statut Membre Dernière intervention 6 janvier 2010 7
21 déc. 2008 à 08:04
et pourquoi ne pas utiliser l'utilitaire switch.exe pour faire ceci dans un batch : plus propre et plus concis
0
serialtueur Messages postés 49 Date d'inscription mardi 25 novembre 2008 Statut Membre Dernière intervention 22 octobre 2009 80
21 déc. 2008 à 09:24
2 problèmes :

déjà si mon fichier a une suite, je fais
var1:blablabla
var2:bliblibli

et je met
FOR /F "tokens=1,2 delims=1:" %%i in (test.inf) do @echo %%j

je met le "1:" pour que le programme sache que c'est la première valeur dont j'ai besoin

mais il m'affiche

blablabla
var2:bliblibli


ce qui se comprend, le programme est séparé en 2 parties, la suite est incluse dans la variable.
pour y remédier, j'ai voulu séparer mon programme en 4 parties.

Mais voila le problème, comment déclarer un séparateur différent.... ?

j'ai essayé de modifier mon fichier comme ça :

var1:variable ;1
var2:variable2 ;2

pour que les séparateurs soient clairs, et mon batch ainsi :

FOR /F "tokens=1,2,3,4 delims=1:, ;1, 2:" %%i in (test.inf) do @echo %%j

mais ça me met ";1, 2: était inattendu"
merci de vos réponses ...

0
serialtueur Messages postés 49 Date d'inscription mardi 25 novembre 2008 Statut Membre Dernière intervention 22 octobre 2009 80
12 févr. 2009 à 14:22
up s'il vous plait
0
Lol, ça marche pas comme ça, normalement ton délimiteur est un (1) seul caractère. Heureusement ils ont pensé à séparer aussi par exemple si ton délimiteur est: '_' et que ton entrée a par exemple : "var1____var2__var3_var4" il va les couper correctement. Sinon il va falloir que tu coupes plusieurs fois par chaque caractère de séparation en indentant, ce qui n'est absolument pas désirable.

Bonne chance.

Moi aussi je suis pris avec un "2 était inattendu"... à suivre...
0