질문과 답변

윈 도 우 배치파일 고수님들 도와주세요...) 배치파일 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 - -
97698 기 타| 엑셀 좀 하시는분 계실까요? 도와주세요~ [1] 밍구몽 300 09-01
97697 소프트웨어| 삼성플로우 앱에서 스마트뷰가 로딩만 되고 실행이 되지 않... [2] 사가르마타 59 09-01
97696 소프트웨어| 한글파일 이력서 표수정이 안되는데 도움이필요합니다 [10] 렛고 538 09-01
97695 기 타| 영화 파일에서 소리 교체 [3] 컨피그 518 08-31
97694 기 타| 151빌더 질문이요~ 노랑개굴 207 08-31
97693 윈 도 우| 윈도우를 vhd 에 설치한 거하고 ssd에 설치한 거 중 어느... [5] brucex 463 08-31
97692 서버 / IT| 바이두로그인 질문 인증번호 해외번호우회회 로그인을 했었... [1] 컴아저씨훈 182 08-31
97691 윈 도 우| 안녕하세요 부팅 문제인데요.. [2] 시유랩 232 08-31
97690 하드웨어| 메인보드 로고 화면에서 멈춰서 부팅이 안되는 때가 많아요. [18] 기억의멜로 780 08-30
97689 윈 도 우| 윈도우10에서 인터넷 익스플로러 11 마우스 오른쪽키 글자... [2] 달용빛 264 08-30
97688 소프트웨어| 혹시 코렐드로우 x5 쓰시는분 있나요? [3] 오룡대사 327 08-30
97687 윈 도 우| xpe151에 대한 질문좀 드립니다. drivers 컴아저씨훈 153 08-30
97686 윈 도 우| pe 무선랜통합시 dat파일 질문좀 [2] 컴아저씨훈 158 08-30
97685 윈 도 우| RsimageX관련 질문 드립니다. [6] BSD 487 08-30
97684 소프트웨어| TrueImage2016 단일실행 파일 구할 수 없을까요? [2] SUbSigNal 360 08-29
97683 윈 도 우| 바이러스나 기타 등등 대항하기위해선 VHD 사용이 가장 좋... [2] MSTSC 296 08-29
97682 하드웨어| qhd 모니터 dvi-dvi연결 도음좀 부탁드립니다. [5] 놀랐네 195 08-29
97681 윈 도 우| cmd 질문이요.. [2] 노랑개굴 303 08-29
97680 하드웨어| 모니터 화면이 퍼드덕 거립니다 [2] joe 322 08-29
97679 윈 도 우| 윈도우 서버 2008 다운받을 곳 없을까요? [2] jgbyuk 225 08-29
XE1.11.6 Layout1.4.8