Script de lot - Variables

Il existe deux types de variables dans les fichiers de commandes. Le premier concerne les paramètres qui peuvent être passés lors de l'appel du fichier batch et l'autre se fait via la commande set.

Arguments de ligne de commande

Les scripts batch prennent en charge le concept d'arguments de ligne de commande dans lesquels les arguments peuvent être passés au fichier batch lorsqu'ils sont appelés. Les arguments peuvent être appelés à partir des fichiers de commandes via les variables% 1,% 2,% 3, etc.

L'exemple suivant montre un fichier de commandes qui accepte 3 arguments de ligne de commande et les renvoie à l'écran de ligne de commande.

@echo off 
echo %1 
echo %2 
echo %3

Si le script batch ci-dessus est stocké dans un fichier appelé test.bat et que nous devions exécuter le batch comme

Test.bat 1 2 3

Voici une capture d'écran de ce à quoi cela ressemblerait dans l'invite de commande lorsque le fichier de commandes est exécuté.

La commande ci-dessus produit la sortie suivante.

1 
2 
3

Si nous devions exécuter le lot comme

Example 1 2 3 4

La sortie resterait toujours la même que ci-dessus. Cependant, le quatrième paramètre serait ignoré.

Définir la commande

L'autre façon dont les variables peuvent être initialisées est via la commande 'set'. Voici la syntaxe de la commande set.

Syntaxe

set /A variable-name=value

où,

  • variable-name est le nom de la variable que vous souhaitez définir.

  • value est la valeur qui doit être définie par rapport à la variable.

  • /A – Ce commutateur est utilisé si la valeur doit être de nature numérique.

L'exemple suivant montre une manière simple d'utiliser la commande set.

Exemple

@echo off 
set message=Hello World 
echo %message%
  • Dans l'extrait de code ci-dessus, une variable appelée message est définie et définie avec la valeur "Hello World".

  • Pour afficher la valeur de la variable, notez que la variable doit être entourée du signe%.

Production

La commande ci-dessus produit la sortie suivante.

Hello World

Travailler avec des valeurs numériques

Dans le script batch, il est également possible de définir une variable pour contenir une valeur numérique. Cela peut être fait en utilisant le commutateur / A.

Le code suivant montre une manière simple dont les valeurs numériques peuvent être définies avec le commutateur / A.

@echo off 
SET /A a = 5 
SET /A b = 10 
SET /A c = %a% + %b% 
echo %c%
  • Nous définissons d'abord la valeur de 2 variables, a et b à 5 et 10 respectivement.

  • Nous ajoutons ces valeurs et les stockons dans la variable c.

  • Enfin, nous affichons la valeur de la variable c.

La sortie du programme ci-dessus serait de 15.

Tous les opérateurs arithmétiques fonctionnent dans des fichiers batch. L'exemple suivant montre que les opérateurs arithmétiques peuvent être utilisés dans les fichiers de commandes.

@echo off 
SET /A a = 5 
SET /A b = 10 
SET /A c = %a% + %b% 
echo %c% 
SET /A c = %a% - %b% 
echo %c% 
SET /A c = %b% / %a% 
echo %c% 
SET /A c = %b% * %a% 
echo %c%

La commande ci-dessus produit la sortie suivante.

15 
-5 
2 
50

Variables locales et globales

Dans n'importe quel langage de programmation, il existe une option pour marquer les variables comme ayant une sorte de portée, c'est-à-dire la section de code sur laquelle elles peuvent être accédées. Normalement, les variables ayant une portée globale peuvent être accédées n'importe où à partir d'un programme tandis que les variables de portée locale ont une limite définie dans laquelle elles peuvent être accédées.

Les scripts DOS ont également une définition pour les variables de portée locale et globale. Par défaut, les variables sont globales pour l'ensemble de votre session d'invite de commandes. Appelez la commande SETLOCAL pour rendre les variables locales à la portée de votre script. Après avoir appelé SETLOCAL, toutes les affectations de variables sont rétablies lors de l'appel de ENDLOCAL, de l'appel de EXIT ou lorsque l'exécution atteint la fin du fichier (EOF) dans votre script. L'exemple suivant montre la différence lorsque des variables locales et globales sont définies dans le script.

Exemple

@echo off 
set globalvar = 5
SETLOCAL
set var = 13145
set /A var = %var% + 5
echo %var%
echo %globalvar%
ENDLOCAL

Peu de choses clés à noter sur le programme ci-dessus.

  • La 'globalvar' est définie avec une portée globale et est disponible dans tout le script.

  • La variable 'var' est définie dans une portée locale car elle est incluse entre un bloc 'SETLOCAL' et 'ENDLOCAL'. Par conséquent, cette variable sera détruite dès que l'instruction 'ENDLOCAL' sera exécutée.

Production

La commande ci-dessus produit la sortie suivante.

13150
5

Vous remarquerez que la commande echo% var% ne donnera rien car après l'instruction ENDLOCAL, la variable 'var' n'existera plus.

Utilisation des variables d'environnement

Si vous avez des variables qui seraient utilisées dans les fichiers de commandes, il est toujours préférable d'utiliser des variables d'environnement. Une fois la variable d'environnement définie, elle est accessible via le signe%. L'exemple suivant montre comment voir le JAVA_HOME défini sur un système. La variable JAVA_HOME est un composant clé qui est normalement utilisé par une grande variété d'applications.

@echo off 
echo %JAVA_HOME%

La sortie afficherait le répertoire JAVA_HOME qui dépendrait d'un système à l'autre. Voici un exemple de sortie.

C:\Atlassian\Bitbucket\4.0.1\jre