IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

La ligne de commande Windows et les fichiers batch

Date de publication : 6 avril 2009


XXVII. Variables dans l'invite de commandes Windows
XXVII-A. Comment les variables sont définies avec la commande "set"
XXVII-A-1. Localiser les variables
XXVII-A-2. Variables saisies par l'utilisateur
XXVII-B. Opérations arithmétiques
XXVII-C. Instruction de comparaison de variables dans les fichiers batch


XXVII. Variables dans l'invite de commandes Windows

info Ce chapitre est une traduction de la page en http://commandwindows.com/variables.htm dont l'auteur original est Victor Laurie.
Dans ce chapitre, je vais d'écrire la déclaration et l'utilisation de variables avec la commande "set".

Les variables ont une place importante dans de nombreux langages de script, mais elles jouent un rôle moindre dans la ligne de commande Windows. De nombreuses commandes sont prédéfinies et la portée des variables est assez limitée. Néanmoins, il existe d'importantes utilisations de la ligne de commande où les variables doivent être employées et dans ce chapitre, je vais décrire comment la ligne de commande utilise des variables.


XXVII-A. Comment les variables sont définies avec la commande "set"

On peut dire qu'il existe deux catégories de variables pour la ligne de commande. Certains pourraient utiliser le terme "variable" pour les arguments %1, %2, ..%9, qui sont utilisés pour représenter la saisie de l'utilisateur dans les fichiers batch. (Consultez la description sur cette page). Cependant, le terme "variable" est normalement réservé dans l'invite de commande pour les éléments déclarés comme des variables d'environnement avec la commande "set". Notez qu'il s'agit d'une méthode primitive pour définir des variables. Par exemple, il n'y a pas de types. Les variables d'environnement, y compris les nombres, sont stockés en temps que chaînes de caractères et les opérations qui les utilisent doivent prendre ce fait en compte. Les variables sont déclarées et une valeur leur est assignée en une seule instruction utilisant "set". La syntaxe est :
set une_variable = une_valeur
Les noms de variables ne sont pas sensibles à la casse et peuvent être constitués des caractères alphanumériques usuels et autres caractères courants. Certains caractères sont réservés et doivent être "échappés". Bref, il vaut mieux les éviter. Ces symboles sont listés dans le tableau II sur cette page. Aussi, étant donné que ce sont des variables d'environnement, leurs noms doivent être entourés de symboles % (pour cent) qu'ils sont utilisés dans les références et expressions, par exemple :
%une_variable%
Le signe pourcent n'est pas utilisé dans la partie gauche de l'instruction "set" qui déclare une variable.


XXVII-A-1. Localiser les variables

La déclaration d'une variable dure tout le temps que la fenêtre de commande courante est ouverte. Si vous utilisez un fichier batch qui ne ferme pas la fenêtre de commandes à la fin du traitement, toutes les variables déclarées par le batch restent définies. Si vous souhaitez limiter la portée d'une variable à un ensemble d'instructions particulier, utilisez les commandes "setlocal" et "endlocal". Ainsi, pour limiter la déclaration d'une variable à un bloc de code particulier, utilisez :
....
setlocal
set une_variable = une_valeur
...{des instructions}...
endlocal
...

XXVII-A-2. Variables saisies par l'utilisateur

La commande "set" peut également accepter une saisie de l'utilisateur comme valeur pour une variable. Pour cela, on utilise le commutateur "/p". Un fichier batch attendra que l'utilisateur entre une valeur après l'instruction
set /p nouvelle_variable=
Quand l'utilisateur aura saisi une valeur, le script continuera. Vous pouvez aussi définir un message d'invite pour l'utilisateur. Par exemple :
set /p nouvelle_variable="Entrez une valeur "
Remarquez l'espace à la fin du message d'invite. Si vous ne le faites pas, le message d'invite et l'entrée de l'utilisateur se retrouveront côte à côte sur l'écran. Cela marche mais l'apparence n'est pas fameuse. L'utilisateur peut être tenté de taper une espace, cela ajoutera alors un espace à la valeur saisie.


XXVII-B. Opérations arithmétiques

La ligne de commande n'est pas prévue pour gérer les fonctions mathématiques mais il est possible d'exécuter des opérations très simples d'entiers avec les variables. Un commutateur "/a" a été ajouté à la commande "set" pour permettre quelques fonctions basiques. Cela est principalement utilisé pour effectuer des additions ou des soustractions. Par exemple, il est possible d'incrémenter ou de décrémenter un compteur dans une boucle. En principe, il est également possible d'effectuer des multiplications et des divisions, mais seuls quelques nombres peuvent être gérés donc l'utilisation en pratique est limitée. Bien que les variables soient stockées comme des chaînes, l'interpréteur de commande reconnaît les chaînes qui ne contiennent que des entiers, et leur permet d'être utilisées dans des expressions arithmétiques. La syntaxe est :
set /a une_variable={expression arithmétique}
Les quatre opérations arithmétiques sont indiqués dans le tableau I. J'ai omis l'opération "modulo" qui utilise le signe % d'une autre manière. A mon avis, cela ne fait qu'ajouter de la difficulté à une syntaxe déjà compliqué. (L'utilisation du % de plusieurs manières ne peut amener que de la confusion).

Tableau I. Opérateurs arithmétiques

Symbole Opération
+ Addition
- Soustraction
* Multiplication
/ Division
Voici l'exemple d'une variable %compteur% incrémentée :
set /a compteur=%compteur%+1
Vous pouvez également écrire :
set /a compteur+=1

XXVII-C. Instruction de comparaison de variables dans les fichiers batch

Les variables sont souvent utilisées pour des comparaisons dans les instructions conditionnelles (if...) des fichiers batchs. Certains des opérateurs de comparaison utilisés sont donnés dans le tableau I de la page sur l'instruction "if". En raison de la façon dont la ligne de commande gère les variables, il est nécessaire d'être prudent quand on compare des variables. Pour les chaînes, le moyen le plus sur est d'entourer les variables de guillemets. par exemple :
if "%variable1%" == "%variable2%" une_commande
 

Valid XHTML 1.0 TransitionalValid CSS!

Copyright traduction ©2009 Thomas Garcia. Aucune reproduction, même partielle, ne peut être faite de cette traduction et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 Euros de dommages et intérets.
Copyright site web original : Victor Laurie