ct

Chapitre 5 - Les variables

Définition et utilisation d'une variable

Une variable permet de stocker une donnée indiquée, à tous moment dans le script on pourra faire appel à elle.

rem désactive l'affichage des commandes
echo off
rem remise à blanc de l'écran
cls
rem définition de la valeur de la variable
set variable=1
rem affiche du texte en rappelant la variable grâce aux %
echo la valeur de la variable est %variable%
rem arrêt
pause

Résultat:

var

L'appel de la variable, se fait en plaçant des % autour du nom de la variable.

Demande de valeur à l'utilisateur

 

Il semble intéressant d'interagir avec l'utilisateur en demandant une variable. Cela est possible grâce à l'utilisation du paramètre "/p", passer à la commande set, comme nous le montre cet exemple :

rem désactive l'affichage des commandes
@echo off
rem remise à blanc de l'écran 
cls
rem le /p permet de demander le retour de la variable 
set /p prenom= Quel est votre prenom :
rem remise à blanc
cls
rem affiche le texte avec la variable rentrée
echo Ca va %prenom%, tu a un joli prenom :-)
rem arrêt
pause

Résultat:

var2 var3

Les variables d'environnement

Nous avons vu comment définir des variables, en demander à l'utilisateur, mais Windows possède un certain nombre de variables déjà renseignées, concernant votre système. Pour tester vous pouvez essayer ce script :

rem désactive l'affichage des commandes 
  @echo off
rem remise à blanc de l'écran 
cls
rem liste des variables
echo Salut %USERNAME%,nous sommes le %DATE%
echo il est %Time% déjà!,
echo %RANDOM% est un chiffre al‚atoire.
echo Ton PC se nomme %COMPUTERNAME%,
echo il possŠde %NUMBER_OF_PROCESSORS% processeur,
echo c'est une architecture %PROCESSOR_IDENTIFIER%
rem arrêt
pause

 

Liste des variables d'environnements :

ALLUSERSPROFILE
APPDATA
CLASSPATH
CommonProgramFiles
COMPUTERNAME=
ComSpec
DEVMGR_SHOW_DETAILS
FP_NO_HOST_CHECK
HOMEDRIVE
HOMEPATH
LOGONSERVER
NUMBER_OF_PROCESSORS
OS
Path
PATHEXT
PROCESSOR_ARCHITECTURE
PROCESSOR_IDENTIFIER
PROCESSOR_LEVEL
PROCESSOR_REVISION
ProgramFiles
PROMPT
QTJAVA
SESSIONNAME
SystemDrive
SystemRoot
TEMP
TMP
USERDOMAIN
USERNAME
USERPROFILE
windir
DATE
TIME
CD
RANDOM
ERRORLEVEL
CMDEXTVERSION
CMDCMDLINE

Je vous laisse les essayer, je ne vais pas vous montrer pour chaque, ce serait trop long.

Découpage d'une variable

L'interêt de découper une variable est d'extraire certaines parties afin de les retraiter.

p Principe:

Prenons la variable d'environnement %ProgramFiles%

echo %ProgramFiles% donne C:\Program Files

p Désormais nous souhaitons conserver uniquement le lecteur "c:\"

echo %ProgramFiles:~0,3%

On observe que l'ajout du ":~" qui indique le découpage, les valeurs suivantes "0,3" indiquent comment la découper. En effet le 0 indique que le début de la sélection est le 0eme caractère, le 3 indique qu'elle s'arrête au 3eme.

Autre solution possible, par suppression de caractères:

echo %ProgramFiles:~,-13%

p Conservons désormais le nom du dossier "Program Files" uniquement

echo %ProgramFiles:~3,13%

echo %ProgramFiles:~3%

 

p Exemple:

rem désactive l'affichage des commandes
 @echo off
rem remise à blanc de l'écran
cls  
 echo variable de base date: %date%
rem découpage %date:~0,2%
rem 1er chiffre numéro du caractère de début de la sélection
rem 2eme chiffre nombre de caractères après le début 
echo Nous sommes le %date:~0,2% le %date:~3,2%eme mois de l'ann‚e %date:~6,4%
rem arrêt 
pause

 

Résultat:

decuop

Calculs simple avec des variables

Grâce aux batch il est possible de faire des opérations simples telle qu'une addition, soustraction, multiplication ou encore division. Cela est possible avec la commande set /a.

@echo off

 echo Addition 
 set /a add = 5+5 
 echo 5 + 5 = %add%
 
echo.
 echo Soustraction
set /a sous = 10-5
echo 10 - 5 = %sous%
echo.
echo Division
set /a div = 10/2
echo 10 / 2 = %div%
echo.
echo Multiplication
set  /a mult = 10*2
echo 10 * 2 = %mult%
pause

 

Résultat:

 

q Il est possible de donner des priorités aux opérations grâce aux parenthèses.


@echo off

echo Priorit‚ op‚ratoire
set /a pri = ((10*5)*2 + (10*5)*2)/2
echo ((10*5)*2 + (10*5)*2)/2 = %pri%

Résultat:

10 votes. Moyenne 3.70 sur 5.