기타 공부 기록/배치파일

배치파일 if 문에서 다중 조건 쓰기

babystep 2023. 5. 30. 15:54
728x90

윈도우 운영체제에서 배치파일로  다중 조건을 쓰는 조건문이 사용하고 싶을때가 있습니다.

 

c 코드를 예를 들자면 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
int num01 = 10;
 
int num02 = 30;
 
int num03 = 40;
 
 
 
if ( num01 == 0|| num02 ==30 || num03 == 0) {
 
    printf("if statement is trigger");
 
}
cs

위와 같이 조건 중에서 num02만 30값을 충족하지만 다중조건하나만 충족해도 이프문은 트리거됩니다. 

 

위와 같은 코드를 배치파일로 사용하고 싶다면. 

아래와 같이 goto 문을 사용해야합니다.

 

왜냐하면 배치파일에서는  다중조건을 지원하지 않기 때문입니다. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
@echo off
setlocal enabledelayedexpansion
 
set /a num01=10
set /a num02=30
set /a num03=40
 
rem 초기값출력
echo num01 is %num01%
echo num02 is %num02%
echo num03 is %num03%
 
rem 다중조건대신 goto문 이용 
IF %num01% equ 0 goto IfStatement_is_trigger
IF %num02% equ 30 goto IfStatement_is_trigger 
IF %num03% equ 0 goto IfStatement_is_trigger 
 
rem 배치파일은 코드가 순차적 실행되므로 위의 3가지 if문을 충족 못 했을때 실행 할 부분으로 이동 
goto IfStatement_is_not_execute
 
 
rem  조건 트리거 된 경우
:IfStatement_is_trigger
(
    echo if statement is trigger
    goto EndBatchCode 
)
rem  조건 트리거 안 된 경우 
:IfStatement_is_not_execute
(
    echo if statement is not execute
    goto EndBatchCode
)
 
:EndBatchCode
 
pause
 
cs

 

 

 

위의 배치파일 실행시 아래와 같은 화면을 볼 수 있습니다. 

 

 

 

728x90