배치 스크립트-배열

배열은 배치 스크립트에서 유형으로 특별히 정의되지 않지만 구현할 수 있습니다. 배치 스크립트에서 배열을 구현할 때 다음 사항에 유의해야합니다.

  • 배열의 각 요소는 set 명령으로 정의해야합니다.
  • 배열의 값을 반복하려면 'for'루프가 필요합니다.

배열 만들기

다음 set 명령을 사용하여 배열을 만듭니다.

set a[0]=1

여기서 0은 배열의 인덱스이고 1은 배열의 첫 번째 요소에 할당 된 값입니다.

배열을 구현하는 또 다른 방법은 값 목록을 정의하고 값 목록을 반복하는 것입니다. 다음 예제는 이것이 어떻게 구현 될 수 있는지 보여줍니다.

@echo off 
set list = 1 2 3 4 
(for %%a in (%list%) do ( 
   echo %%a 
))

산출

위의 명령은 다음 출력을 생성합니다.

1
2
3
4

어레이 액세스

아래 첨자 구문을 사용하여 배열 이름 바로 뒤 대괄호 안에 검색하려는 값의 인덱스를 전달하여 배열에서 값을 검색 할 수 있습니다.

@echo off 
set a[0]=1 
echo %a[0]%

이 예에서 인덱스는 0에서 시작합니다. 즉, 인덱스를 0으로 사용하여 첫 번째 요소에 액세스 할 수 있고 두 번째 요소에 인덱스를 1로 사용하여 액세스 할 수 있다는 것을 의미합니다. 다음 예제를 확인하여 배열을 생성, 초기화 및 액세스합니다.

@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]%

위의 명령은 다음 출력을 생성합니다.

The first element of the array is 1 
The second element of the array is 2 
The third element of the array is 3

배열 수정

배열 끝에 요소를 추가하려면 배열 요소의 마지막 인덱스와 함께 set 요소를 사용할 수 있습니다.

@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]%

위의 명령은 다음 출력을 생성합니다.

The last element of the array is 4

다음 예와 같이 주어진 인덱스에 새 값을 할당하여 배열의 기존 요소를 수정할 수 있습니다.

@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]%

위의 명령은 다음 출력을 생성합니다.

The new value of the second element of the array is 5

배열 반복

배열에 대한 반복은 'for'루프를 사용하고 배열의 각 요소를 통해 이루어집니다. 다음 예제는 배열을 구현할 수있는 간단한 방법을 보여줍니다.

@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]! 
)

위의 프로그램에 대해 다음 사항에 유의해야합니다.

  • 배열의 각 요소는 set 명령을 사용하여 구체적으로 정의해야합니다.

  • 범위를 이동하기위한 / L 매개 변수가있는 'for'루프는 배열을 반복하는 데 사용됩니다.

산출

위의 명령은 다음 출력을 생성합니다.

Comments 
variables 
Arrays 
Decision making 
Time and date 
Operators

배열의 길이

배열의 요소 수를 결정하는 직접적인 함수가 없기 때문에 배열의 값 목록을 반복하여 배열의 길이를 결정합니다.

@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%

산출

출력 위의 명령은 다음 출력을 생성합니다.

The length of the array is 4

배열에 구조 만들기

구현을 위해 약간의 추가 코딩을 사용하여 배치 파일에서 구조를 구현할 수도 있습니다. 다음 예는이를 달성하는 방법을 보여줍니다.

@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

위의 코드에 대해 다음과 같은 주요 사항에 유의해야합니다.

  • set 명령을 사용하여 정의 된 각 변수에는 배열의 각 인덱스와 관련된 2 개의 값이 있습니다.

  • 변수 i 0으로 설정되어 구조를 반복 할 수 있도록 배열의 길이가 3입니다.

  • 우리는 항상 i 값이 다음 값과 같은지 조건을 확인합니다. len 그렇지 않은 경우 코드를 반복합니다.

  • obj [% i %] 표기법을 사용하여 구조의 각 요소에 액세스 할 수 있습니다.

산출

위의 명령은 다음 출력을 생성합니다.

Name = Joe 
Value = 1 
Name = Mark 
Value = 2 
Name = Mohan 
Value = 3