devstory

Tableau (Array) dans le langage de script Batch

  1. Tableau dans la langue Batch
  2. Tester l'existence d'un élément
  3. Répéter à travers les éléments du tableau
  4. Un élément a structure

1. Tableau dans la langue Batch

Un tableau est une rangée d'éléments contigus qui sont des index (index) numérotés : 0, 1, 2, ....
Pour les autres langues, un tableau a une taille fixe. Mais dans le langage Batch, le tableau a une taille dynamique et aucun attribut ne décrit la longueur du tableau (le nombre d'éléments du tableau). Et aucune fonction (function) ne vous aide directement à obtenir le nombre d'éléments de tableau.
Tous les éléments du tableau doivent être assignés à des valeurs via une requête set. Sinon, cet élément n'existe pas.
@echo off
set myarray[0] = Abc
set /A myarray[1] = 234
set myarray[2]=Def

set myarray[0]=A new value
Exemple :
arrayExample1.bat
@echo off
set names[0]=Tom
set names[1]=Jerry
set names[2]=Donald
set names[3]=Aladin

echo names[0]= %names[0]%
echo names[3]= %names[3]%

@rem names[10] does not exists!
echo names[10]= %names[10]%
pause
Vous pouvez attribuer de nouvelles valeurs aux éléments du tableau. Voici un exemple :
arrayExample2.bat
@echo off
set names[0]=Tom
set names[1]=Jerry
echo names[0]= %names[0]%

@rem: Assign new value
set names[0]=Donald

echo After assign new value to names[0]:
echo names[0]= %names[0]%
pause

2. Tester l'existence d'un élément

L'utilisation la commande defined vous aide à savoir l'existence d'un élément dans un tableau.
arrayDefinedExample.bat
@echo off
set Arr[0]=1000
set Arr[1]=5000
set Arr[2]=3000

if not defined Arr[5] (
   echo Element at 5 does not exists!
)
if defined Arr[1] (
   echo Element at 1 exists!
)
pause

3. Répéter à travers les éléments du tableau

La boucle For /F peut être approuvé sur une portée de numéros (Range of numbers), par conséquent, il peut être approuvé sur une gamme d'indices de tableau (range of indexes).
fetchArrayExample1.bat
@echo off
set fruits[0]=Apple
set fruits[1]=Apricot
set fruits[2]=Asparagus
set fruits[3]=Aubergine
set fruits[4]=Banana

FOR /L %%i IN (0 1 4) DO  (
   call echo Element At %%i = %%fruits[%%i]%%
)
pause
Si vous ne connaissez pas le nombre d'éléments de tableau à l'avance, vous pouvez répéter ses éléments en utilisant la commande goto.
fetchArrayExample2.bat
@echo off
set fruits[0]=Apple
set fruits[1]=Apricot
set fruits[2]=Asparagus
set fruits[3]=Aubergine
set fruits[4]=Banana

set /A i = 0
:my_loop 
    if defined fruits[%i%]  (
        call echo Element At %i% = %%fruits[%i%]%%  
        set /a i = %i% + 1
        goto :my_loop
    ) 
echo Done!
pause

4. Un élément a structure

Dans le langage Batch, un élément de tableau peut avoir une structure (structure). Une structure est un objet avec de nombreux attributs, par exemple un objet représente pour une personne avec 2 attributs tels que firstName, lastName (le prénom, le nom).
structureArrayExample.bat
@echo off
set persons[0].firstName=Bill
set persons[0].lastName=Gates

set persons[1].firstName=Steve
set persons[1].lastName=Jobs

set persons[2].firstName=Mark
set persons[2].lastName=Zuckerberg 

set persons[3].firstName=Sundar
set persons[3].lastName=Pichai

FOR /L %%i IN (0 1 3) DO  (
   call echo Person At %%i = %%persons[%%i].firstName%% %%persons[%%i].lastName%%
)
pause