배치 스크립트-배열
배열은 배치 스크립트에서 유형으로 특별히 정의되지 않지만 구현할 수 있습니다. 배치 스크립트에서 배열을 구현할 때 다음 사항에 유의해야합니다.
- 배열의 각 요소는 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