윈 도 우 배치파일 반복문 변수값 질문
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 | - | - |
44112 | 윈 도 우| 크롬 한국어 변경 [2] | 홍낄똥 | 271 | 02-18 |
44111 | 윈 도 우| 방패마크가 있는 아이콘은 관리자 권한으로 실행해야 하는... [3] | joe | 674 | 02-17 |
44110 | 윈 도 우| ms 스토어 오류 | knife | 164 | 02-17 |
44109 | 윈 도 우| WinNTSetup 트윅 관련 질문입니다. [1] | Holloga | 386 | 02-17 |
44108 | 윈 도 우| 크롬 탭 이동 방법 [5] | knada | 435 | 02-17 |
44107 | 윈 도 우| Acronis 백업 및복원문의 [2] | FirstK | 464 | 02-16 |
44106 | 윈 도 우| 프리미어 프로 작업창 어떻게 합치나요? [2] | 클라크 | 222 | 02-16 |
44105 | 윈 도 우| Windows 10 cmd창에 한글 입력 시 한 글자씩 지연되는 문제 [2] | 동백 | 1100 | 02-16 |
44104 | 윈 도 우| 여러 PE.ISO를 외장하드 넣고 선택적 ISO 선택 부팅가능한... [5] | 맥주조아 | 810 | 02-16 |
44103 | 윈 도 우| 윈도우 10 로그인화면에 배경화면 질문좀 드려요. [6] | 그림자아이 | 406 | 02-16 |
44102 | 윈 도 우| 지마켓 우클릭 해제 확장프로그램 있으면 소개부탁드려요 [7] | go3go | 521 | 02-15 |
44101 | 윈 도 우| 인텔10세대에서 윈10을 mbr로 설치시 듀얼모니터가 안됨 [2] | egqq | 506 | 02-15 |
44100 | 윈 도 우| 윈도우10 블루투스 버튼 살리기 [5] | 破緣 | 512 | 02-15 |
44099 | 윈 도 우| win32diskimager 가 win10 에서는 실행이 안되나요? [2] | 홍다니 | 388 | 02-15 |
44098 | 윈 도 우| 새 컴퓨터 사용자 폴더 문의드립니다. [4] | 민트민 | 502 | 02-15 |
44097 | 윈 도 우| prince_PE 에 드라이버 추가 못하나요? [2] | 져지해골 | 484 | 02-15 |
44096 | 윈 도 우| 무통장 입금도 가명으로 입금이 가능 한가요? [5] | 폭시여우 | 1838 | 02-14 |
44095 | 윈 도 우| 이제 더 이상 윈도우7은... [9] | Holloga | 972 | 02-14 |
44094 | 윈 도 우| 윈도우설치 오류(특이한 경우) [7] | 거스 | 576 | 02-14 |
44093 | 윈 도 우| 트윅으로 돌아다니는 Lite버전은 업데이트못하나요? [3] | 컴알못러 | 518 | 02-14 |
개인정보 때문이신지 너무 많은 부분을 생략하신것 같은데,
지금 올리신 질문만으로는 T1 T2 T3가 변수명인지, 파일명인지, 문자열인지 뭘 구분하려는건지 알 수가 없습니다.
저 상태로는 어떤식으로 배치파일을 짜던 test.txt가 생성되는 순간 바로 T3까지 완료됐다고 넘어갑니다.
정확히 뭘 원하시는지 모르니 제대로 된 답변이 어렵습니다.