질문과 답변
윈 도 우 배치 반복문 안에서 errorlevel 체크가 이상하네요
2020.12.29 18:24
@echo off
cd /d %~dp0
for %%i in (HONEYVIEW) do (
echo. - "%%i" 시작
start /wait /b cmd /c "%%i.exe"
echo. - 에러레벨 : %ERRORLEVEL%
if not %ERRORLEVEL%==0 (echo. - 설치실패.& goto exit)
echo. - "%%i" 완료!
)
:exit
echo.
pause
exit
for문 안에서 start 명령으로 프로그램을 설치할때
취소를 누르면 실패로 떠야하는데 성공으로 돼버리네요
for문 없이 해보면 정상적으로 실패 뜹니다
댓글 [2]
-
히이이잌 2020.12.29 18:46
-
컨피그 2020.12.29 18:55
setlocal enabledelayedexpansion 추가하고
!ERRORLEVEl! 해주니까 잘 작동하네요
감사합니다~
근데 저거 체크하려고 setlocal 추가해야 하는군요
추가없이 하는 다른 방법은 없겠죠?
-------
아 설치하는 부분을 외부 함수로 따로 빼서
call로 호출해주니까 setlocal 추가없이도 되네요
뭐좀 막힌다 싶으면 죄다 외부함수로 빼내야 해결이 되는군요..
-------
:_chk
echo. - 에러레벨 : %ERRORLEVEL%
if not %ERRORLEVEL%==0 (echo. - 설치실패.& goto exit)
exit /b
아 요렇게 체크 부분만 빼내도 되네요체크함수 따로 만들고 다른부분에서 재활용도 가능하겠네요
setlocal enabledelayedexpansion을 미리 적용해야하며,
반복문 안에서 해당 변수는 %가 아닌 !로 감싸주셔야합니다.