질문과 답변

윈 도 우 재질문) setlocal의 지연확장과 call명령을 같이 사용해도 되나요?

2021.12.22 15:02

감기걸렸어요... 조회:176

배치파일에서 setlocal 지연확장(enabledelayedexpansion)과 call 명령을 같이 사용해도 되나요?

다른 글에서 보았는데... 무슨 전역화? 이런거 때문에 안된다고 했던거 같은데 이해를 잘못하겠네요...

 

그리고 다름이 아니라 이렇게 setlocal 지연확장과 call을 같이 사용하려는 이유는 대략 두가지 때문입니다...

------------------------------------------------

(첫번째 배열)

@echo off

setlocal enabledelayedexpansion

for /f "delims=" %%i in ('dir /b ^|findstr "[^a-z][^0-9].txt"') do (

set /a number+=1

set var[!number!]=%%i

call echo %%var[!number!]%%

)

pause

------------------------------------------------

이처럼 동적으로 변수를 생성하고 해당 변수의 값을 찍으려면 다른 방법도 있겟지만...

이렇게 setlocal 지연확장과 call 명령을 같이 사용하면 좀 더 쉽게 소스작성이 되는거 같아 이렇게 같이 사용해도 된다면 이렇게 사용하고 싶더군요...

또 !변수!와 같은 기능도 지금 소스에서는 배열의 첨자부분에만 사용하지만... 

다른 소스에서는 뭐...  배열 인덱스에 쓸 변수말고도 여러 다른 변수를 선언하고 쓸 수도 있으니...

강력한 setlocal 지연확장도 취할 수도 있고...

------------------------------------------------

(두번째 함수)

@echo off

setlocal enabledelayedexpansion

for /f "delims=" %%i in ('dir /b ^|findstr "[^a-z][^0-9].txt"') do (

set /a number+=1

set var[!number!]=%%i

call :lavel

)

goto eof

 

:lavel

call echo %%var[%number%]%%

exit /b

 

:eof

pause

------------------------------------------------

함수에 관한 소스는 딱히 call로 라벨을 이동할 필요가 없는 함수긴 하지만...

그냥 전달하고자 하는 것은...

이처럼 setlocal 지연확장을 사용하면서 call (:레이블)로 함수를 타고 싶어서입니다...

예로 call이 아닌 goto로 작성하면...

------------------------------------------------

@echo off

setlocal enabledelayedexpansion

for /f "delims=" %%i in ('dir /b ^|findstr "[^a-z][^0-9].txt"') do (

set /a number+=1

set var[!number!]=%%i

goto :lavel

:endfunction

)

goto eof

 

:lavel

call echo %%var[%number%]%%

goto endfunction

 

:eof

pause

------------------------------------------------

")은(는) 예상되지 않았습니다."

라는 오류 문구가 뜨기 때문입니다...

 

 

그래서 정리하자면...

setlocal 지연확장과 call을 같이 사용해도 되나요?

안된다면...

어떤 이유때문인지 궁금합니다... (일단 들었던 걸로는 전역화 때문이라는데... 여기에 대한 설명도 해주시면 감사하겠습니다... ㅠ)

번호 제목 글쓴이 조회 등록일
[공지] 질문과 답변 게시판 이용간 유의사항 gooddew - -
99411 Windows Vista SP1 Preview Pack Download [5] Windows Vi 14046 09-15
99410 윈 도 우| 윈도우 7 홈 베이직이나 스타터 버전에서 에어로 느낌이 나... [3] 죠타로 14044 11-23
99409 소프트웨어| internet download manager사용하시는 분들 계신가요? [4] 화이 14038 11-28
99408 윈 도 우| KMS방식으로 인증후에 홈 그룹이 사라집니다. [3] nubibiz 14022 03-18
99407 USB용 고스트(GHOST) [4] 소보 14004 03-26
99406 윈도우7 64bit 게임폴더에서 인터넷바로가기 되시는 분? 정영수 13982 09-11
99405 윈 도 우| IDE controller driver가 누락된다고 나오네요 [2] 지안나 13974 08-20
99404 윈 도 우| CTF Loader가 뭔가요? [4] brucex 13967 06-25
99403 윈 도 우| 바탕화면의 바로가기 아이콘 사라지는 현상 [2] skecjac 13967 07-30
99402 A.I 1003H 버젼 최적화 어떻게 하는거죠??? [5] 달의영혼 13964 10-28
99401 윈 도 우| 64비트 알약사용 [9] 무육점 13937 11-30
99400 하드웨어| Internet download Manager 한글패치 문제 [2] 한 걸 음 13936 09-26
99399 윈 도 우| 5월 12일 릴된 Win7 ultimate 버전 파일 해시값 확인 좀 부... [4] 티티카카 13930 05-21
99398 윈 도 우| 알람 횟수 초기화 방법 공피 13895 03-26
99397 하드웨어| 컴퓨터가 안 켜집니다.. 비프음 4번 [3] 카스타드 13865 11-18
99396 윈 도 우| 국민은행 보안프로그램 무한설치..도와주세요 [6] 가브리엘777 13844 05-29
99395 윈 도 우| 초코에디션 써 보신분 계신가요? [2] 난하기 13843 10-08
99394 하드웨어| 알수없는 usb장치(장치 설명자 요청 실패) [5] 낙엽 13821 12-22
99393 윈 도 우| 데몬툴 지우기 [8] ▒벗님▒ 13814 11-07
99392 윈 도 우| Download Link를 누르면 웹페이지를 찾을 수 없다고 나옵니다. [4] 컴지존 13793 04-19
XE1.11.6 Layout1.4.8