질문과 답변

윈 도 우 재질문) 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 - -
97372 소프트웨어| 웹페이지를 PDF 또는 Html로 캡쳐하는 프로그램이 있나요? [6] 골드캐쉬 527 07-22
97371 소프트웨어| ms pcmanager를 설치하니 runtime이 없다고 합니다 [4] brucex 159 07-22
97370 윈 도 우| 제어판 윈도우 창 상단 최대화 방지하기 [5] 이슬 335 07-22
97369 하드웨어| 보드 및 cpu 교체시 [2] 뷰티블마인 607 07-21
97368 윈 도 우| 엣지브라우저 출력 기본창 변경 되나요?? [2] 적상이 298 07-21
97367 윈 도 우| 인터넷 프로토컬 배치파일 만들수있을까요? [5] 소녀시대 383 07-20
97366 소프트웨어| PC최적화 프로그램 효과가있을까요? [8] 렛고 1117 07-20
97365 윈 도 우| 재부팅 안하고 같은 효과를 나게 할수 없을까요? [8] 보투수리맨 564 07-20
97364 윈 도 우| 작업표시줄 숨김시, 알림표시를 해제할수 있나요? [6] SIM 394 07-20
97363 소프트웨어| 익스 강제 종료 [11] rthgh 442 07-20
97362 윈 도 우| 컴퓨터 리부팅 문제 [3] 뷰티블마인 405 07-20
97361 하드웨어| 컴퓨터가 안 꺼집니다. [4] 이코누 687 07-20
97360 소프트웨어| 토탈커맨더 내장 압축기 vs 7-zip Abundance 288 07-20
97359 소프트웨어| 가독성 좋은 텍스트뷰어가 뭐가 있을까요? [8] 서애 672 07-19
97358 기 타| 전기 전문가님 계신가요?.. [4] cosmosa 634 07-19
97357 기 타| BIOS 업데이트 질문 [2] 3561 492 07-19
97356 윈 도 우| 파폭 찾을 수 없습니다 이름을 올바르게 문제점 [8] 소녀시대 202 07-19
97355 윈 도 우| 새노트북 구입후 [5] 하루면충분 596 07-19
97354 기 타| tv 에 유트브소리를 세븐좋아 220 07-19
97353 윈 도 우| PE 부팅음제거가 궁금합니다. [1] 전지전지 197 07-19
XE1.11.6 Layout1.4.8