Массивы (Array) в языке Batch

View more categories:

1- Массив в языке Batch

Массив это ряд последовательных элементов, которые индексированы (index)  0, 1, 2, ....
Для других языков массив имеет фиксированный размер. Но в языке  Batch, массив имеет динамический размер, и не имеет атрибут описывающий длину массива (количество элементов массива). И не имеет прямой функции (function), которая поможет вам получить количество элементов массива.
Все элементы массивы должны иметь прикрепленное значение через команду  set, не то этот элемент не существует.
** syntax **
@echo off

set myarray[0] = Abc
set /A myarray[1] = 234
set myarray[2]=Def

set myarray[0]=A new value
 
Пример:
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
Вы можете прикрепить новые значения для элементов массива, пример ниже:
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- Проверить существование элемента

Использовать команду  defined, чтобы проверить существует ли элемент в массиве?
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- Повторить через элементы массива

Смотрите так же:
Цикл  For /F может быть подтвержден на ряде цифр (Range of numbers), поэтому он может подтверждать на ряде индексов массива (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
Если вы не знаете заранее количество элементов в массиве, вы можете повоторить на его элементах используя команду  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- Элементы имеет структуру

В языке  Batch, элемент массива может иметь структуру (Structure). Структура это объект с разными атрибутами, например объект представляет человека с 2 атрибутами как  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

View more categories: