codestory

Arrays in der Batch-Skriptsprache

  1. Array in der Sprache Batch
  2. Die Prüfung der Existenz eines Element
  3. Auf die Elemente des Array iterieren
  4. Ein Element hat die Struktur

1. Array in der Sprache Batch

Array ist eine Reihe der angrenzenden Elemente. Die Elemente werden die Index 0, 1, 2, ... gemarkiert.
Für die anderen Sprache hat Array die bestimmte Größe. Aber in der Sprache Batch hat Array die dynamische Größe und es gibt kein Attribut zur Bezeichnung der Länge des Array (die Anzahl der Elemente des Array). Und keine Funktion hilft Ihnen direkt bei der Holung der Anzahl der Array-Elementen
Alle Elementen des Array müssen die Wert durch den Befehl set angewiesen. Ansonsten existiert das Element nicht
@echo off
set myarray[0] = Abc
set /A myarray[1] = 234
set myarray[2]=Def

set myarray[0]=A new value
Zum Beispiel
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
Sie können die neue Wert für die Array-Elementen anweisen. Unter ist das das Beispiel
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. Die Prüfung der Existenz eines Element

Die Verwendung des Befehl defined hilft Ihnen zu prüfen, ob ein Element im Array existiert oder nicht?
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. Auf die Elemente des Array iterieren

Die Schleife For /F kann auf einer Reihe der Zahlen (Range of numbers) durchgelaufen werden. Deshalb kann sie auf die Reihe der Index (range of indexes) durchlaufen
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
Wenn Sie die Anzahl der Array- elemente im Voraus nicht kennen, können Sie auf ihre Elementen durch die Verwendung des Befehl goto iterieren.
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. Ein Element hat die Struktur

In der Sprache Batch kann das Element des Array eine Struktur (Structure) haben. Eine Struktur ist ein Objekt mit mehren Attribute, zum Beispiel ein Objekt vertritt eine Person mit 2 Attributes firstName, lastName
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