IF 문에서 수식을 사용하고 싶을 때, 예를 들면, 에러 체크를 위해 루프를 도는 개수등을 카운트하고 싶다면 SET 에서 /A 옵션을 사용하고 IF에서 비교 연산자를 사용하면 된다. IF 문의 비교 연산자는 다음과 같다
EQU – 같음
NEQ – 같지 않음
LSS – 보다 작은
LEQ – 작거나 같음
GTR – 보다 큰
GEQ – 크거나 같음
다음은 start 로 3가지 일을 동시에 처리한 후 goto와 label을 이용, cygwin의 delay로 일정 시간 체크한 후 그 후 에러로 처리하는 bat 파일의 예다.
@echo off
SET /A LOOP_COUNT=1
SET /A LOOP_MAX_COUNT=5
SET CYGWIN_DELAY=[Cygwin 경로]\delay.exe
SET DELAY_TIME=5m
rem WORK1, 2, 3를 동시에 돌린다. 다음 작업에 dependency 가 있는 작업에
rem start의 /W 옵션을 주어 기다리도록 한다.
start WORK1.bat
start WORK2.bat
start /W WORK3.bat
goto CHECK
:DELAY
rem if LOOP_COUNT >= LOOP_MAX_COUNT
IF %LOOP_COUNT% GEQ %LOOP_MAX_COUNT% (
echo ERROR!
exit 1
)
rem Delay 한다.
%CYGWIN_DELAY% %DELAY_TIME%
rem LOOP_COUNT += 1
SET /A LOOP_COUNT+=1
:CHECK
echo Checking…
IF [WORK1 실패조건] (
echo Work 1 is Failed!
goto DELAY
)
echo Work1 is success!
IF [WORK2 실패조건] (
echo Work 2 is Failed!
goto DELAY
)
echo Work2 is success!
IF [WORK3 실패조건] (
echo Work 3 is Failed!
goto DELAY
)
echo Work3 is success!
call WORK4.bat
'CMD BAT 인스톨' 카테고리의 다른 글
NsisInstaller (0) | 2021.01.12 |
---|---|
NSIS_MUI_reference (0) | 2021.01.12 |
관리자 권한으로 프로그램 시작등록 (0) | 2018.12.07 |
[윈도우] 사용중인 특정 포트 및 프로그램 확인하기 (netstat, tasklist) (0) | 2018.12.06 |
[batch-file] % ~ dp0의 의미는 무엇이며 어떻게 작동합니까? (0) | 2018.11.30 |
최근댓글