Toplu Komut Dosyası - Diziler
Diziler, Toplu Komut Dosyasında özel olarak bir tür olarak tanımlanmaz, ancak uygulanabilir. Diziler Batch Script'te uygulandığında aşağıdaki hususlara dikkat edilmelidir.
- Dizinin her bir elemanının set komutu ile tanımlanması gerekir.
- Dizinin değerleri arasında yineleme yapmak için 'for' döngüsü gerekli olacaktır.
Dizi Oluşturma
Aşağıdaki set komutu kullanılarak bir dizi oluşturulur.
set a[0]=1
0, dizinin dizinidir ve 1, dizinin ilk öğesine atanan değerdir.
Dizileri uygulamanın başka bir yolu, bir değerler listesi tanımlamak ve değerler listesi boyunca yinelemektir. Aşağıdaki örnek, bunun nasıl uygulanabileceğini göstermektedir.
Misal
@echo off
set list = 1 2 3 4
(for %%a in (%list%) do (
echo %%a
))
Çıktı
Yukarıdaki komut aşağıdaki çıktıyı üretir.
1
2
3
4
Dizilere Erişim
Alt simge sözdizimini kullanarak diziden bir değer elde edebilir, almak istediğiniz değerin dizinini köşeli parantez içinde dizinin adından hemen sonra iletebilirsiniz.
Misal
@echo off
set a[0]=1
echo %a[0]%
Bu örnekte, dizin 0'dan başlamaktadır, bu da ilk elemana 0 olarak dizin kullanılarak erişilebileceği, ikinci elemana 1 olarak dizin kullanılarak erişilebileceği anlamına gelir. Dizileri oluşturmak, başlatmak ve bunlara erişmek için aşağıdaki örneği kontrol edelim -
@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]%
Yukarıdaki komut aşağıdaki çıktıyı üretir.
The first element of the array is 1
The second element of the array is 2
The third element of the array is 3
Bir Diziyi Değiştirme
Dizinin sonuna bir öğe eklemek için, dizi öğesinin son dizini ile birlikte set öğesini kullanabilirsiniz.
Misal
@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]%
Yukarıdaki komut aşağıdaki çıktıyı üretir.
The last element of the array is 4
Aşağıdaki örnekte gösterildiği gibi, belirli bir dizine yeni bir değer atayarak bir Dizinin mevcut bir öğesini değiştirebilirsiniz -
@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]%
Yukarıdaki komut aşağıdaki çıktıyı üretir.
The new value of the second element of the array is 5
Bir Dizi Üzerinde Yineleme
Bir dizi üzerinde yineleme, 'for' döngüsü kullanılarak ve dizinin her bir öğesi üzerinden geçilerek elde edilir. Aşağıdaki örnek, bir dizinin uygulanabileceği basit bir yolu gösterir.
@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]!
)
Yukarıdaki programla ilgili aşağıdaki noktalara dikkat edilmesi gerekir:
Dizinin her bir öğesi, set komutu kullanılarak özel olarak tanımlanmalıdır.
Aralıklar arasında hareket etmek için / L parametresine sahip 'for' döngüsü, dizi içinde yineleme yapmak için kullanılır.
Çıktı
Yukarıdaki komut aşağıdaki çıktıyı üretir.
Comments
variables
Arrays
Decision making
Time and date
Operators
Bir Dizinin Uzunluğu
Bir dizinin uzunluğu, bir dizideki öğelerin sayısını belirleyen doğrudan bir işlev olmadığından, dizideki değerlerin listesi üzerinde yinelenerek yapılır.
@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%
Çıktı
Çıktı Yukarıdaki komut aşağıdaki çıktıyı üretir.
The length of the array is 4
Dizilerde Yapı Oluşturma
Yapılar, uygulama için biraz fazladan kodlama kullanılarak toplu dosyalarda da uygulanabilir. Aşağıdaki örnek bunun nasıl elde edilebileceğini göstermektedir.
Misal
@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
Yukarıdaki kodla ilgili olarak aşağıdaki temel noktalara dikkat edilmelidir.
Set komutu kullanılarak tanımlanan her değişken, dizinin her bir dizini ile ilişkili 2 değere sahiptir.
Değişken i 0 olarak ayarlanmıştır, böylece yapı boyunca döngü yapabiliriz, dizinin uzunluğu 3 olur.
Her zaman i'nin değerinin değerine eşit olup olmadığını kontrol ederiz. len ve değilse, kodu gözden geçiririz.
Yapının her bir öğesine obj [% i%] gösterimini kullanarak erişebiliyoruz.
Çıktı
Yukarıdaki komut aşağıdaki çıktıyı üretir.
Name = Joe
Value = 1
Name = Mark
Value = 2
Name = Mohan
Value = 3