Apprendre le Batch :
Les variables grâce à 'SET'
Bon je vous préviens, ce chapitre ne va franchement pas être très simple à expliquer mais il n'est pas compliqué

Tout dépend de vous. Je vais partir de la base pour que tout le monde puisse être au même niveau
De 2 choses l'une :
- Vous connaissez déjà les variables (dans ce cas, allez direct à la partie
2) )
- Ou alors z'avez pas la moindre idée de ce que c'est que cet animal (auquel cas, je l'explique dès maintenant)
1) Introduction aux variables
Les variables c'est la base de tout. Par exemple lorsque vous lancez MSN et que vous tapez votre adresse et votre mot de passe, c'est stocké dans une variable. En fait je dirais que chaque fois que vous tapez quelque chose dans un champ c'est stocké dans une variable.
Bien sûr ça ne s'arrête pas là, chaque fois qu'un programme veut enregistrer quelque chose,
une valeur,
une chaine de caractère (je vous expliquerais plus loin), etc.., le programme le stocke dans une variable.
En fait une variable, c'est un emplacement dans <a href="http://fr.wikipedia.org/wiki/M%C3%A9moire_vive">la mémoire vive</a> (la RAM dit-on aussi) qui nous est réservé.
Mais bon dans la réalité, on s'en fout un peu, ce qui compte, c'est ce qui va suivre, finis la rigolade

Passons aux choses sérieuses !
2) Déclarer une variable
Tout ce qui va toucher aux variable en général se fait avec la commande :
SET
( et j'en profite pour rappeler, bien sûr, que les majuscule ou minuscules n'ont pas d'importance).
Pour déclarer une variable,
il y a 2 possibilités :
1. Cette variable sera numérique, c'est à dire que vous ne stockerez qu'une valeur en base décimale (base 10), hexadécimale (base 16) ou octale (base 8).
Si vous ne savez pas ce qu'est une base alors vous utilisez très certainement la base décimale (chiffres de 0 à 9).
<a href="http://fr.wikipedia.org/wiki/Base_(arithmétique)">Un article sur les bases pour plus de renseignements !</a>
2. Cette variable contiendra une chaine de caractère.
Ca y'est, j'en entends déjà

:
Mais c'est quoi une chaineuh de machintruc là ?
C'est une
suite de caractères. Donc ça peut-être une phrase, un mot, une lettre ou un nombre si vous ne vous en servez pas pour le calcul par la suite.
Maintenant que nous savons tout ça, passons du coté code.
1er cas, déclarer une variable numérique :
SET /A nom_de_votre_variable = VALEUR
Analysons ce code :
SET : Bon bah c'est la commande dont je vous parlais, rien à dire de particulier.
/A : C'est un
paramètre qui indique qu'il s'agit d'une variable numérique.
nom_de_votre_variable : Bon bah je vous le donne en mille, c'est le nom de votre variable

, ce nom est là pour que vous vous repériez avec vos variable. Donc ne mettez pas 'var1' ou un truc incompréhensible comme 'c4Fe'
= : C'est un égal d'affectation qui va servir à affecter la valeur qui se trouve à droite.
VALEUR : La valeur comme vous avez pu le deviner

Vous avez la possibilité de l'écrire en 3 bases.
Soit en base 10 : Rien à faire de spécial, si ce n'est de
ne pas mettre de 0 inutiles devant (vous allez voir pourquoi juste après), donc par exemple : 35 s'écrira 35 et 09 s'écrira 9.
Soit en base 16 : Là, vous devrez mettre
0x devant. Donc par exemple : 255 s'écrira 0xFF.
Soit en base 8 : Là vous devrez ajouter
0 devant. Donc par exemple : 12 s'écrira 014 et 1256 s'écrira 02350.
On va faire un petit code pour terminer la partie variable numérique mais je voudrais vous parler juste avant des conventions que je vais adopter. Comme le batch autorise beaucoup de choses qui peuvent faire prendre de mauvaises habitudes si vous voulez un jour programmer dans un autre langage, je me suis tenu à des conditions strictes :
Le nom de la variable : : Il ne contiendra que des caractères alphanumériques simples (donc accents interdits) en plus du caractère
_ (l'underscore ou tiret du bas). Une variable ne peut que commencer par une lettre.
Exemples valides : '
age_chien', '
taille_maison2', '
blabla596'
Exemples invalides : '
6blabla' (commence par un chiffre), '
maison chloé' (caractère espace et accent)
Forme de la commande : Je laisserais toujours un espace de chaque coté du égal.
Voilà en gros les conventions que je me tiendrais de respecter. Je répète bien que
Ce ne sont pas les conventions officielles, le batch laisse un peu plus (mais pas beaucoup plus) de marge, c'est uniquement à titre personnel.
Maintenant un code récapitulatif en n'oubliant pas le code minimal vu avant :
@echo off
REM On déclare une variable qui contiendra le nombre de PC
REM que chacun a dans sa maison (fallait bien trouver quelque chose) :
set /A nombre_pc = 4
pause>nul
Et vous allez bien sûr vous demandez ce que ça fait à l'écran ? Absolument rien, Héhé.
C'est juste qu'on va voir comment l'utiliser juste après, car je rappelle qu'on a juste déclarer une variable.
2ème cas, déclarer une variable classique :
Oui ce sont les variables classiques ou normales. Elles contiennent donc une chaine de caractère comme expliqué avant.
Voici la commande :
set nom_de_la_variable=VALEUR
Analysons-là :
On remarque qu'elle est presque semblable à celle d'avant.
On voit qu'il n'y a pas de paramètres, en effet par défaut la commande initialise la variable en tant que variable normale.
La valeur peut être n'importe quoi, aussi bien une phrase de 10 mots qu'une lettre ou un nombre.
S'il s'agit d'une phrase ou de caractères, les majuscules et minuscules sont conservées.
S'il s'agit juste d'un nombre, prenez l'habitude de le stocker dans une variable numérique car imaginez que vous décidiez de vous en servir autrement que pour l'afficher à l'écran..
Conventions personnelles utilisées :
Forme de la commande : Aucuns espaces de part et d'autre du égal.
Un petit code pour résumer :
@echo off
REM On déclare une variable qui contiendra le nom de l'utilisateur (vous quoi)
set nom_utilisateur=Yoshito
pause>nul
Comme précédemment cet exemple n'affichera rien à l'écran excepté le fameux 'Appuyez sur une touche blabla...'
Pfiouuuu !

Je vous cacherais pas que ça n'a pas été facile à expliquer mais au moins le plus dur du chapitre est fait.
Si vous n'avez pas tout compris, je
vais déprimer vous conseille de relire pour bien assimiler

Car c'est une base qui est plus que fondamentale !
Maintenant que vous avez compris, on va enfin se servir des variables en les affichant à l'écran dans un premier temps.
3) Afficher une variable à l'écran
Très simple, on utilise la commande echo car c'est elle qui affiche des choses à l'écran.
Ca donne :
echo %nom_de_la_variable%
Comme vous le voyez, le nom de la variable est mis entre '
%' (signe du pourcentage).
Ca n'est pas exclusif à 'echo', chaque fois qu'on voudra utiliser les variables en dehors de la commande SET, on mettra des '
%' autour pour signaler qu'il s'agit d'une variable.
Maintenant testons ceci avec les codes qu'on avait utilisé pour déclarer les variables :
-
Variable numérique :
@echo off
REM On déclare une variable qui contiendra le nombre de PC
REM que chacun a dans sa maison (fallait bien trouver quelque chose) :
set /A nombre_pc = 4
REM On l'affiche à l'écran, sans oublier que le nom de variable n'est pas sensible à la casse
REM (veut dire que %nomVar%=%nomvar%=%NoMvAr% etc..)
echo Chez toi, tu as %nombre_PC% ordinateur(s) !
pause>nul
Résultat à l'écran :
Chez toi, tu as 4 ordinateur(s) !
Mais vous devez vous demander pourquoi est-ce qu'on s'ennuie à utiliser des variables numériques car on pourrait très bien faire :
set nombre_pc=4
Cela marcherait tout aussi bien.
Euh, oui et ?
Tout simplement parce que nous n'allons pas en rester là sur des exemples aussi basiques, et que nous ferons des opérations (genre multiplier par 4 le nombre de PC

) et là, sans variables numériques, ça marcherait absolument pas.
-
Variables normales (qui contiennent les chaines de caractères) :
@echo off
REM On enregistre le nom de l'utilisateur
set nom_utilisateur=Yoshito
REM On l'affiche à l'écran
echo Hmm, je pense que tu t'appelles %nom_utilisateur% !
pause>nul
Résultat à l'écran :
Hmm, je pense que tu t'appelles Yoshito !
4) Modifier une variable
Très simple, il suffit de la réinitialiser :
@echo off
REM Variable numérique :
set /a age = 10
echo Tu as %age% ans !
set /a age = 20
echo Maintenant, tu as %age% ans !
REM Variable normale :
set nom_chien=Ralfi
echo Ton chien s'appelle %nom_chien%
set nom_chien=bouff'tout
echo J'ai renomme ton chien en %nom_chien% !!
pause>nul
Même si vous ne voyez pas l'intérêt maintenant, vous le verrez dans le chapitre sur le traitement des variables
Et voilà, ouf, je suis crevé mais satisfait

N'hésitez pas à faire des exemples chez vous, entrainez-vous, vous devez maîtriser ce chapitre pour la suite,
c'est vital !