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