Skrypt wsadowy - tablice
Tablice nie są specjalnie zdefiniowane jako typ w skrypcie wsadowym, ale można je zaimplementować. Podczas implementacji tablic w skrypcie wsadowym należy zwrócić uwagę na następujące rzeczy.
- Każdy element tablicy należy zdefiniować poleceniem set.
- Pętla „for” byłaby wymagana do iteracji po wartościach tablicy.
Tworzenie tablicy
Tablica jest tworzona za pomocą następującego polecenia set.
set a[0]=1
Gdzie 0 to indeks tablicy, a 1 to wartość przypisana do pierwszego elementu tablicy.
Innym sposobem implementacji tablic jest zdefiniowanie listy wartości i iteracyjne przeglądanie listy wartości. Poniższy przykład pokazuje, jak można to zaimplementować.
Przykład
@echo off
set list = 1 2 3 4
(for %%a in (%list%) do (
echo %%a
))
Wynik
Powyższe polecenie daje następujący wynik.
1
2
3
4
Dostęp do tablic
Możesz pobrać wartość z tablicy, używając składni indeksu dolnego, przekazując indeks wartości, którą chcesz pobrać, w nawiasach kwadratowych bezpośrednio po nazwie tablicy.
Przykład
@echo off
set a[0]=1
echo %a[0]%
W tym przykładzie indeks zaczyna się od 0, co oznacza, że dostęp do pierwszego elementu można uzyskać za pomocą indeksu równego 0, do drugiego elementu można uzyskać dostęp za pomocą indeksu 1 i tak dalej. Sprawdźmy następujący przykład, aby utworzyć, zainicjować i uzyskać dostęp do tablic -
@echo off
set a[0] = 1
set a[1] = 2
set a[2] = 3
echo The first element of the array is %a[0]%
echo The second element of the array is %a[1]%
echo The third element of the array is %a[2]%
Powyższe polecenie daje następujący wynik.
The first element of the array is 1
The second element of the array is 2
The third element of the array is 3
Modyfikowanie tablicy
Aby dodać element na końcu tablicy, możesz użyć elementu set wraz z ostatnim indeksem elementu tablicy.
Przykład
@echo off
set a[0] = 1
set a[1] = 2
set a[2] = 3
Rem Adding an element at the end of an array
Set a[3] = 4
echo The last element of the array is %a[3]%
Powyższe polecenie daje następujący wynik.
The last element of the array is 4
Możesz zmodyfikować istniejący element tablicy, przypisując nową wartość do danego indeksu, jak pokazano w poniższym przykładzie -
@echo off
set a[0] = 1
set a[1] = 2
set a[2] = 3
Rem Setting the new value for the second element of the array
Set a[1] = 5
echo The new value of the second element of the array is %a[1]%
Powyższe polecenie daje następujący wynik.
The new value of the second element of the array is 5
Iterowanie po tablicy
Iterację po tablicy uzyskuje się za pomocą pętli „for” i przechodzenia przez każdy element tablicy. Poniższy przykład pokazuje prosty sposób, w jaki można zaimplementować tablicę.
@echo off
setlocal enabledelayedexpansion
set topic[0] = comments
set topic[1] = variables
set topic[2] = Arrays
set topic[3] = Decision making
set topic[4] = Time and date
set topic[5] = Operators
for /l %%n in (0,1,5) do (
echo !topic[%%n]!
)
Należy zwrócić uwagę na następujące rzeczy dotyczące powyższego programu -
Każdy element tablicy należy szczegółowo zdefiniować za pomocą polecenia set.
Pętla „for” z parametrem / L do poruszania się po zakresach jest używana do iteracji po tablicy.
Wynik
Powyższe polecenie daje następujący wynik.
Comments
variables
Arrays
Decision making
Time and date
Operators
Długość tablicy
Długość tablicy jest określana przez iterację po liście wartości w tablicy, ponieważ nie ma bezpośredniej funkcji do określenia liczby elementów w tablicy.
@echo off
set Arr[0] = 1
set Arr[1] = 2
set Arr[2] = 3
set Arr[3] = 4
set "x = 0"
:SymLoop
if defined Arr[%x%] (
call echo %%Arr[%x%]%%
set /a "x+=1"
GOTO :SymLoop
)
echo "The length of the array is" %x%
Wynik
Dane wyjściowe Powyższe polecenie daje następujące dane wyjściowe.
The length of the array is 4
Tworzenie struktur w szykach
Struktury mogą być również implementowane w plikach wsadowych przy użyciu dodatkowego kodowania do implementacji. Poniższy przykład pokazuje, jak można to osiągnąć.
Przykład
@echo off
set len = 3
set obj[0].Name = Joe
set obj[0].ID = 1
set obj[1].Name = Mark
set obj[1].ID = 2
set obj[2].Name = Mohan
set obj[2].ID = 3
set i = 0
:loop
if %i% equ %len% goto :eof
set cur.Name=
set cur.ID=
for /f "usebackq delims==.tokens=1-3" %%j in (`set obj[%i%]`) do (
set cur.%%k=%%l
)
echo Name = %cur.Name%
echo Value = %cur.ID%
set /a i = %i%+1
goto loop
Na temat powyższego kodu należy zwrócić uwagę na następujące kluczowe rzeczy.
Każda zmienna zdefiniowana za pomocą polecenia set ma 2 wartości powiązane z każdym indeksem tablicy.
Zmienna i jest ustawiona na 0, abyśmy mogli zapętlić strukturę o długości tablicy, która wynosi 3.
Zawsze sprawdzamy warunek, czy wartość i jest równa wartości len a jeśli nie, przechodzimy przez kod.
Jesteśmy w stanie uzyskać dostęp do każdego elementu struktury za pomocą notacji obj [% i%].
Wynik
Powyższe polecenie daje następujący wynik.
Name = Joe
Value = 1
Name = Mark
Value = 2
Name = Mohan
Value = 3