윈 도 우 배치파일 반복문 변수값 질문
2020.12.28 18:42
@echo off
for %%i in (T1 T2 T3) do (
echo. - "%%i" 시작
:_wait
if not exist "%USERPROFILE%\Desktop\test.txt" (
timeout /t 5 /nobreak >nul
echo. - "%%i" 잠시대기
goto _wait
)
echo. - "%%i" 완료!
echo.
)
댓글 [14]
-
히이이잌 2020.12.28 19:13
-
컨피그 2020.12.28 19:26
개인정보 때문은 아니고요
T1 T2 T3 별의미 없습니다 실사용 배치 내용에는 저게 파일명이라서요
(Bandizip Honeyview 7Zip) 이런식으로 파일명 넣고
밑에서 start 명령으로 설치작업을 시작하는겁니다
(단순히 문자열로 사용)
저 상태로는 test.txt가 생성되는 순간 T3 까지 완료되는게 맞고요
일단 T1 하나가 해결되면 나머지도 해결되니까 상관 없습니다
일단 test.txt가 없는 상태로 5초씩 대기하는 동안
%%i 값이 사라지지 않고 유지되면 해결됩니다.
-
arim 2020.12.28 19:24
wait 함수를 외부로 보내고, test.txt 파일 이름에 차이가 있어야 할 것 같네요.
-
컨피그 2020.12.28 19:31
실사용 배치 내용에서는 test.txt 파일 이름을 변수로 처리해서 차이를 뒀습니다
wait 함수를 외부로 보내버리면 다음차례인 T2로 넘어가는 동작이 될까요..?
-
arim 2020.12.28 19:44
감사합니다.
-
히이이잌 2020.12.28 19:37
@echo off
for %%i in (T1 T2 T3) do (
set Tmp=%%i
echo. - "%%i" 시작
CALL :WAIT
echo. - "%%i" 완료!
)
ECHO 모든 작업 완료
PAUSE >nul
:wait
timeout /t 2 /nobreak >nul
echo. - "%Tmp%" 잠시대기
if not exist "%USERPROFILE%\Desktop\test.txt" GOTO WAIT
exit /b
위 내용을 참고하여 고쳐보세요.
-
컨피그 2020.12.28 19:43
감사합니다~
-
elios 2020.12.28 19:49 역시 goto가 있어야 되는군요
해결 되시길 바라요~
--
아 call 로 가는거군요 잘못봤네요
-
suk 2020.12.28 19:59
- "T1" 을 유지하는건 본문에 쓰신대로 setlocal enabledelayedexpansion 사용하시면 됩니다
다만 %%i 가 아니라 윗분들처럼 다시 %%i 를 변수로 지정하셔야 유지됩니다
위에 스샷의 핵심 내용입니다
@echo off
setlocal enabledelayedexpansion
for %%i in (T1 T2 T3) do (
set file=%%i
echo. - "!file!" 시작
call :_wait
echo. - "!file!" 완료!
)
@echo.
@echo.
@echo.=========================================================
@echo. 모든 작업을 완료했습니다
@echo.=========================================================
@echo.
@pause
@exit
:_wait
if exist "%USERPROFILE%\Desktop\test.txt" exit /b
echo. - "!file!" 잠시대기
timeout /t 5 /nobreak >nul
goto :_wait
-
컨피그 2020.12.28 21:02
오오 역시 suk님 감사합니다~
바로 적용해보니 깔끔하게 성공! 원하던데로 잘 작동합니다
setlocal enabledelayedexpansion
요걸 사용해야한다는 느낌은 왔는데 한두번 정도밖에 사용해보질 않아서
어떻게 적용시켜야하나 고민이 많았네요
저걸 사용 후 변수로 다시 받아야하나도 고민했는데 맞았네요
감사합니다~
-
suk 2020.12.28 21:49
아! 위에 제가 올린 방식도 작동은 잘 됩니다만
그 전 댓글에서 T1 유지가 안 되신다고 하셔서 저도 다른 경우와 착각한 부분이 있네요
여기서는 setlocal enabledelayedexpansion 사용하지 않아도 T1 유지 가능합니다
사용해도 되고, 안 해도 된다면 안 하는 것이 더 간단해서 좋겠지요.
@echo off
for %%i in (T1 T2 T3) do (
echo. - "%%i" 시작
set file=%%i
call :_wait
echo. - "%%i" 완료!
)
echo.
echo.
echo.=========================================================
echo. 모든 작업을 완료했습니다
echo.=========================================================
echo.
pause
exit
:_wait
if exist "%USERPROFILE%\Desktop\test.txt" exit /b
echo. - "%file%" 잠시대기
timeout /t 5 /nobreak >nul
goto :_wait
이 방식은 위에 댓글에 다른 분께서 올려주신 방법입니다
%%i을 외부로 보내기 위해서만 변수를 지정하면 됩니다.
저는 for 구문 안에서 변수를 지정하고 계속 사용할 때와 착각을 했습니다.
for 구문 안에서 변수를 지정하고 계속 사용할 때는 setlocal enabledelayedexpansion가 필요하고 %대신에 ! 이 필요합니다
여기서는 for 구문 내에는 %%i를 사용하면 되기 때문에 필요가 없습니다
-
컨피그 2020.12.28 22:48
그러네요 어쩐지 아래 arim님 댓글에 있는거 해보니까
setlocal enabledelayedexpansion 없이도 되더라고요
제꺼에 적용해보고 이리저리 바꿔보고 댓글달려고 왔더니 이미 댓글이 있네요
말씀하신대로 중요한건 %%i 값을 외부로 보내기위해 따로 변수에 담아놓고
wait 함수를 따로 빼낸걸 call 로 호출하는것이 중요하네요
신경써 주셔서 감사합니다~
-
arim 2020.12.28 21:03
-
컨피그 2020.12.28 22:50
이 방법도 잘 되네요
잠시대기가 제자리에서 카운트 되는것도 신기하고요
감사합니다!
번호 | 제목 | 글쓴이 | 조회 | 등록일 |
---|---|---|---|---|
[공지] | 질문과 답변 게시판 이용간 유의사항 | gooddew | - | - |
6143 | 윈 도 우| 윈도우10 2004 탐색기 메뉴 치 조정 못하나요? [1] | 레전드한화 | 265 | 08-05 |
6142 | 윈 도 우| Windows10 오프라인 업데이트 질문요! [3] | 투윤 | 265 | 11-14 |
6141 | 소프트웨어| 크롬에서 네이버TV 볼륨이 항상 최대치로 재생되네요 ㅠ-ㅠ | 건조한치는 | 265 | 08-05 |
6140 | 윈 도 우| windows 10 시작메뉴 문의 | jaeheon | 265 | 10-16 |
6139 | 기 타| 카페24 ftp 파일 업로드 문의 [4] | 번개 | 265 | 04-03 |
6138 | 윈 도 우| 역시 인사이더 프리뷰인가? [3] | 이프로 | 265 | 03-26 |
6137 | 윈 도 우| Dream wtg 질문 [2] | 싸나이 | 265 | 03-05 |
6136 | 소프트웨어| Xyplorer 파일 복사/이동 단축키가 있나요? [1] | 우성이 | 265 | 11-18 |
6135 | 소프트웨어| 배치파일 질문드립니다. [3] | Greinke | 265 | 11-08 |
6134 | 하드웨어| 노트북 쿨링패드 소음 틱틱 거리는거 해법 있나요? [1] | 메리아 | 265 | 11-10 |
6133 | 소프트웨어| 인터넷 문제 입니다. [4] | 마스크 | 265 | 07-25 |
6132 | 하드웨어| usb [1] | 수담 | 265 | 07-12 |
6131 | 윈 도 우| 작업표시줄에포터블프로그램표시 [1] | kwi | 265 | 05-06 |
6130 | 하드웨어| 문의)) 메인보드 추천 부탁드립니다...^^;;; [3] | chobits | 265 | 06-18 |
6129 | 소프트웨어| 오피스 2016 사용시 글꼴 선택하는 창에서 랙이 걸리는 분제 | 산정 | 265 | 02-28 |
6128 | 서버 / IT| Ip및 랜카드에 대한 질문입니다. 답변 부탁드려욬 [2] | morrie | 265 | 01-18 |
6127 | 윈 도 우| windows pe로 부팅했을 때의 시간 [2] | 럭키보이 | 265 | 12-11 |
6126 | 윈 도 우| vhd로 부팅시 기존 c:자료 숨기기 가능한가여~ [3] | 검은눈동자 | 265 | 11-05 |
6125 | 윈 도 우| 1703 시작메뉴 비활성화 문의 [2] | 아름드리나 | 265 | 10-20 |
6124 | 모 바 일| 스마트폰의 app 설치파일에서 ARM, x86, mod 등은 무슨의미... [1] | murimgasa | 265 | 12-10 |
개인정보 때문이신지 너무 많은 부분을 생략하신것 같은데,
지금 올리신 질문만으로는 T1 T2 T3가 변수명인지, 파일명인지, 문자열인지 뭘 구분하려는건지 알 수가 없습니다.
저 상태로는 어떤식으로 배치파일을 짜던 test.txt가 생성되는 순간 바로 T3까지 완료됐다고 넘어갑니다.
정확히 뭘 원하시는지 모르니 제대로 된 답변이 어렵습니다.