질문과 답변

윈 도 우 재질문) 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 - -
97482 소프트웨어| 키보드 배열 바꿀 수 있을까요? [1] slhyou 194 06-29
97481 윈 도 우| wim 파일에서 시작화면고정 시 등록되어진 부분 삭제? [2] ToFinder 194 09-03
97480 기 타| 팝콘 머신 내부 전기 배선 연결 질문 드립니다. [1] 쌍둥이아빠 194 09-06
97479 하드웨어| 프린터 전원케이블 3구 클로버형인데 구성이 궁금합니다. [2] 감사한 194 10-02
97478 소프트웨어| 파이어폭스 질문 좀 드릴게요. [4] 현지니 194 10-20
97477 소프트웨어| iobit uninstaller 설치후 크랙풀림증상 [1] 명기리 194 11-20
97476 소프트웨어| 크롬 북마크 내보내기에서 [1] 실시간 194 10-30
97475 윈 도 우| WSL2 로 서비스를 돌리는게 아직은 비추천인가요? [3] 엽기토끼이 194 11-08
97474 윈 도 우| 배치스크립트 특정 행번호로 그 줄만 출력 질문 [6] 컨피그 194 02-13
97473 윈 도 우| 스크립트or bat or reg [4] 봄은오는가 194 02-19
97472 기 타| 크롬 다운로드 문의 [2] 홍낄똥 194 04-06
97471 소프트웨어| 오토핫키 하나 질문드려 봅니다. [2] 천공의아키 194 04-27
97470 윈 도 우| 다이렉트x 통합된 pe 어떤게 있을까요.....? [2] 센돔타오르 194 12-09
97469 소프트웨어| 크롬이 결제나 뭘 누르면 그냥 프로그램이 없어져 버립니다. [2] brucex 194 02-10
97468 윈 도 우| WOL 관련 윈도우 랜카드 설정 질문드립니다. [2] 이제부터아 194 12-28
97467 윈 도 우| TaskScheduler 가 자동으로 실행되는 이유가 뭘까요? [2] 좋게멋지게 194 02-08
97466 소프트웨어| 갤러리 동영상 Freespirit 194 01-04
97465 기 타| 문의)) 크룸북에 설치 된 크롬OS는 Play스토어가 있던데요.... [2] chobits 194 02-20
97464 윈 도 우| 샘송놋북 홈을 iotenter로 설치해보고 싶은데요 [2] #cortana# 194 03-10
97463 윈 도 우| 윈도우에서 레이드0으로 쓰고 싶습니다.. [2] BSD 194 04-03
XE1.11.6 Layout1.4.8