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