Arrays in der Batch-Skriptsprache
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
Mehr sehen
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