Utilisation de variable en MS-DOS ?

Utilisation de variable en MS-DOS ? - Programmation

Marsh Posté le 15-10-2001 à 13:53:14    

Salut à tous,
 
Je voudrai qques explquations sur l'utilisation des variables en MS-DOS. Le peu que j'ai compris pour l'instant c'est quelles sont entourées du signe pourcentage (genre : %MA_VARIABLE%), mais je ne sais pas comment on fait pour leur affecter une valeur, ni comment les passer en parametre a un autre fichier ".bat" que celui que l'on est en train d'utiliser.
 
Je vous remercie d'avance pour votre aide.


---------------
Qui cherche le soleil évite la pluie !
Reply

Marsh Posté le 15-10-2001 à 13:53:14   

Reply

Marsh Posté le 15-10-2001 à 13:59:25    

salut
Les Variables : un nom de variable est une chaîne de caractères. On affecte une valeur à la variable avec la commande set ; on désigne le contenu de la variable en entourant le nom de la variable de % :
Set mavar= « c:\windows » /* sans espaces autour du signe égale */
Echo %mavar% /* affiche le contenu de la variable mavar. */
 
Les paramètres :
Paramètres formels : %0 à %9. Ils sont remplacés par leur valeur à l’exécution. %0 est un paramètre spécial qui désigne le nom complet de la procédure. %1 est le nom du premier para qui suit le nom du fichier de commandes, etc, etc...


---------------
di. / www.diredaredare.org - Ailes de la ville
Reply

Marsh Posté le 15-10-2001 à 15:38:55    

pour le SET, ça marche bien avec des espaces il me semble...
 
set variable = 45
 
passage de variable:
 
call autre.bat %variable%
 
récupération et affichage dans autre.bat:
 
echo %1


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 15-10-2001 à 16:27:53    

désolé de te contredire antp (pour une fois) :
set toto=xxx et
set toto= xxx
de même avec set toto =
ne donnent pas le même résultat :
set toto = crée une variable toto_    le _ signifie ici l'espace
set toto= xxx crée une variable toto valant _xxx
 
C'est un des bugs les plus classiques des progrs batch...
 
tu peux le vérifier en essayant de supprimer une variable toto_ par la commande set toto=  : celà ne marche pas, la variable existe toujours.
 
 
A+

 

[edtdd]--Message édité par JPA--[/edtdd]

Reply

Marsh Posté le 15-10-2001 à 16:57:23    

mille excuses, tu as raison
:jap:
je crois que je devrais suivre une formation MS-DOS, depuis que j'ai Win98 (et maintenant Win2k) je n'y touche plus... et j'oublie mes origines (DOS 4 + Win3.0, DOS 6 + Win3.1).


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 18-10-2001 à 00:24:50    

Merci beaucoup pour vos réponses.
 
Si j'ai bien compris, %1 reprend la valeur du premier parametre passer derriere l'appelle d'un fichier .bat et %2 le second etc...
Par contre j'ai déjà vu dans des batchs les variables entourées de guillemets ex : "%ma_variable%". A quoi servent-elles ?

Reply

Marsh Posté le 18-10-2001 à 00:26:59    

gaellick a écrit a écrit :

Merci beaucoup pour vos réponses.
 
Si j'ai bien compris, %1 reprend la valeur du premier parametre passer derriere l'appelle d'un fichier .bat et %2 le second etc...
Par contre j'ai déjà vu dans des batchs les variables entourées de guillemets ex : "%ma_variable%". A quoi servent-elles ?  



sûrement pour les noms de fichiers. si tu as un fichier avec un espace, faire
 
copy my file.txt backup.txt
 
ne marchera pas. il faut utiliser :
 
copy "my file.txt" backup.txt
 
...

Reply

Marsh Posté le 18-10-2001 à 08:28:43    

JPA>On sent le vieux briscard ms-dossien :D
Les guillemets : à utiliser pour les noms de fichiers dits "longs", cad qui ne respectent pas le format ms-dos.
Atention, les guillemets n'ont pas d'impact comme dans un langage de programmation : toutes les occurences d'une variable sont remplacées par leur valeur, qu'il y ait des guillemets ou pas :
set mavar=coucou
echo %mavar% /* affiche coucou */
echo "%mavar%" /* affiche "coucou" */
Accessoirement, le @ en début de ligne inhibe l'afficage de la commande lancée par le bat, pou faire propre une fois que ça tourne...


---------------
di. / www.diredaredare.org - Ailes de la ville
Reply

Marsh Posté le 18-10-2001 à 09:34:20    

-> instantdharma :lol:
 
-> gaellick : J'ai oublié de te donner 2 conseils :
1) Faire en sorte que les variables que tu crée aient un nom différent des variables d'environnement standard. pour celà le mieux est de les créer de la forme _toto ou __toto.
2) en fin de batch, il vaut mieux les supprimer car elles ne sont pas supprimées automatiquement et celà t'occupe de la mémoire inutilement, ce qui pourrait t'empêcher de créer d'autres variables dans d'autres batch :
 
:fin
set _toto=
set _toto2=
etc.
 
A+

Reply

Marsh Posté le 19-10-2001 à 17:17:43    

Super les gars, je n'attendais pas autant de bon conseils  :love:  
 
Une autre question me turlupine et m'est revenu a l'esprit apres le message de nstantdharma :

Citation :


Accessoirement, le @ en début de ligne inhibe l'afficage de la commande lancée par le bat, pou faire propre une fois que ça tourne...


 
On voit souvent des fichiers batchs commencer par :  
 
@echo
 
Pour quelle raison, et à quoi sert le @ ici.
Qu'entends tu par inhiber l'affichage ?
Parfois je vois également un point "." après echo.  
Pourquoi ?

 

[edtdd]--Message édité par gaellick--[/edtdd]


---------------
Qui cherche le soleil évite la pluie !
Reply

Marsh Posté le 19-10-2001 à 17:17:43   

Reply

Marsh Posté le 19-10-2001 à 17:26:40    

gaellick a écrit a écrit :

Super les gars, je n'attendais pas autant de bon conseils  :love:  
 
Une autre question me turlupine et m'est revenu a l'esprit apres le message de nstantdharma :

Citation :


Accessoirement, le @ en début de ligne inhibe l'afficage de la commande lancée par le bat, pou faire propre une fois que ça tourne...


 
On voit souvent des fichiers batchs commencer par :  
 
@echo
 
Pour quelle raison, et à quoi sert le @ ici.
Qu'entends tu par inhiber l'affichage ?
Parfois je vois également un point "." après echo.  
Pourquoi ?  
 
 




le @ permet de ne pas voir la commande qui est en train d'être exécutée :
 
ex1 : @echo toto
sortie ==> toto
 
ex2 : echo toto
sortie ==> echo toto
           toto
 
le echo. permet d'afficher une ligne blanche..

Reply

Marsh Posté le 19-10-2001 à 19:48:02    

Merci,
 
Allez une derniere et je vous laisse tranquille.
 
Quel est la signification de @echo off ?
 
Je trouve ce bout de code tres frequemment egalement.

Reply

Marsh Posté le 19-10-2001 à 20:27:51    

gaellick a écrit a écrit :

Merci,
 
Allez une derniere et je vous laisse tranquille.
 
Quel est la signification de @echo off ?
 
Je trouve ce bout de code tres frequemment egalement.  




tu le mets 1 fois au début de ton BAT et ensuite t'as plus besoin de mettre des @ devant chaque ligne pour cacher le "code"

Reply

Marsh Posté le 20-10-2001 à 14:32:25    

Merci à tous !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed