[Batch]Fixer une variable à partir d'un texte
serialtueur
Messages postés
49
Date d'inscription
Statut
Membre
Dernière intervention
-
coco -
coco -
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 ?
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 ?
A voir également:
- [Batch]Fixer une variable à partir d'un texte
- Creer un groupe whatsapp a partir d'un autre groupe - Guide
- Comment faire une recherche à partir d'une photo - Guide
- Fichier batch - Guide
- Transcription audio en texte word gratuit - Guide
- Excel cellule couleur si condition texte - Guide
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 ?
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 ?
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
[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
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 :
quand l'utilisateur tape par exemple :
info1 la chaîne balablablablab1 sera redéfinite
j'ai un fichier comme ci-dessus :
le fichier devient :
c'est ça ce que vous voulez
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
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
[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
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....
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....
FOR /F "tokens=1,2 delims=:" %%i in (temp2.txt) do Echo %%i %%j
le fichier temp2.txt ressemble à ceci :
var1 : var2 var1 : var2
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
[var1]: blablablablabla1
[var2]:blablablablabblablabalba2
et que %%i devienne blablablablabla
comment faire ? merci
si t'as un fichier :
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
[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
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
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
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..
ben en fait ce serait modifier la variable [var1]blablablabla depuis le batch principal dans le fichier texte
et pourquoi ne pas utiliser l'utilitaire switch.exe pour faire ceci dans un batch : plus propre et plus concis
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 ...
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 ...
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...
Bonne chance.
Moi aussi je suis pris avec un "2 était inattendu"... à suivre...