질문과 답변

윈 도 우 배치파일 고수님들 도와주세요...) 배치파일 setlocal 지연확장과 call 명령...

2021.12.22 13:59

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

배치파일에서 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 - -
99379 윈 도 우| PC에서 유튜브 링크를 열 때 바로 크롬으로 열게 할 수 없... [4] 사가르마타 373 03-13
99378 소프트웨어| Emeditor Macro 다중 "\^(.+)?\^" 치환 질문입니다. [2] 파풍초 178 03-13
99377 윈 도 우| 기타 시스템 트레이 아이콘 중북 [4] 마로94 255 03-13
99376 윈 도 우| 초보입니다 궁금한게 있습니다 고수님 좀 알려주세요^^ [2] 수리수리 416 03-13
99375 윈 도 우| 부끄러운 질문드립니다. [6] 햇님 555 03-13
99374 소프트웨어| 드라이버를 일괄 설치하는 배치파일을 만들어 주시면 감사... [3] 좋은데이 419 03-12
99373 하드웨어| 애니메이션 제작을 위한 와콤 테블릿 구매 관련 [2] gim2da 150 03-12
99372 윈 도 우| 화면보호기 질문드려요!! [1] 장대동사령 184 03-12
99371 소프트웨어| 비주얼스튜디오 2015 버전 한글 버전 iso [3] jgbyuk 449 03-12
99370 윈 도 우| 윈도우10 바이러스 [5] 소주찾는사 826 03-12
99369 소프트웨어| Emeditor Macro 치환 질문입니다. [5] 파풍초 109 03-12
99368 하드웨어| 이런증사은 어디가 문제 있는걸까요?부팅지연... [8] 이누노메 422 03-12
99367 윈 도 우| pc방에서 파는 윈도우11 사도 되나요? [8] brucex 668 03-12
99366 윈 도 우| 윈도우11 시스템복원 켜놓으시나요? [3] MSTSC 398 03-12
99365 윈 도 우| 윈도우 XP 샘플 음악에 대하여 [3] Niconii 198 03-12
99364 소프트웨어| 한글을 에디터처럼 사용하는 방법을 알려주세요 [2] 라랑 256 03-12
99363 윈 도 우| PE에서 StartMenu 에 APP 을 등록하는 방법 질문 드립니다. [7] 연약한자 204 03-12
99362 소프트웨어| 해당 파일 어떻게 찾아서 넣어 줘야 하나요? [1] 지룡자 193 03-12
99361 하드웨어| 갤럭시 SM-F721N 수신차단방법 [2] 씨케이 337 03-11
99360 윈 도 우| PE 한글화 과정을 알고싶어요. [12] sgain 313 03-11
XE1.11.6 Layout1.4.8