배치 파일의 문법은 간단하지만, IF문은 좀 기능이 많아서 복잡합니다.
다음의 예제는 IF문의 가장 기초적이고 가장 흔히 사용되는 형식을 예로 든 것인데,
현재 날짜와 시각을 화면에 출력하되,
만약 배치 파일을 실행할 때, "/?" 또는 "-h" 라는 옵션을 붙여서 실행했다면, 도움말을 대신 출력하는 것입니다.
if "%1" == "/?" goto HELP
if 뒤에 "비교할 어떤 조건"을 붙이고, 그 조건에 충족되면 무슨 명령어를 실행하라는 뜻입니다.
여기서는 배치파일을 실행할 때 준 첫번째 옵션("%1")이 "/?" 라면, goto HELP 이렇게 도움말 출력 루틴(라벨)으로 점프하라는 내용입니다.
if /i "%1" == "-h" goto HELP
이렇게 if문 자체에 "/i" 옵션을 붙이면, 대소문자 구분없이 문자열을 비교합니다.
배치 IF문 기초 예제
파일명: 0.bat
@echo off
if /i "%1" == "-h" goto HELP
if "%1" == "/?" goto HELP
echo %date% %time%
goto QUIT
:HELP
echo 이 배치파일은 현재 날짜와 시간을 화면에 출력하는
echo 간단한 배치 파일입니다.
echo.
echo -h 또는 /? 라는 옵션을 붙여 실행하면 이 도움말이 나옵니다.
goto QUIT
:QUIT
배치 파일 실행 결과:
D:\Z>0.bat
토 2006-11-18 13:55:09.17
D:\Z>0.bat /?
이 배치파일은 현재 날짜와 시간을 화면에 출력하는
간단한 배치 파일입니다.
-h 또는 /? 라는 옵션을 붙여 실행하면 이 도움말이 나옵니다.
첫번째는 옵션 없이 그냥 실행했기에 현재 날짜가 찍혀 나오고
두번째는 /? 라는 옵션을 붙여 실행했기에, 배치파일 자체에 내장된 도움말이 출력되었습니다.
if문이 배치파일의 "실행시 옵션"을 판단한 것입니다.
윈도우2000/윈도우XP와 그 이상의 운영체제(OS)에서는 배치파일 문법에서,
기본적인 IF문 외에, "IF ELSE 문"도 사용할 수 있습니다. 다음 예제와 같습니다:
BAT 예제: IF ELSE 조건문
파일명: 0.bat
@echo off
setlocal
set foo=test.txt
::(1번 예제)::::::::::::::::::::::::::::::::::::::::::::
if exist %foo% (
echo %foo% 라는 파일이 존재하는군요
) else (
echo %foo% 라는 파일이 없군요
)
::(2번 예제)::::::::::::::::::::::::::::::::::::::::::::
if exist %foo% echo %foo% 라는 파일이 존재하는군요
if not exist %foo% echo %foo% 라는 파일이 없군요
실행 결과:
(현재 디렉토리에 test.txt 라는 파일이 있는 경우에 실행했을 때와
test.txt 파일을 지운 후에 실행했을 때의 경웁니다.)
D:\Z>0.bat
test.txt 라는 파일이 존재하는군요
test.txt 라는 파일이 존재하는군요
D:\Z>
D:\Z>
D:\Z>
D:\Z>0.bat
test.txt 라는 파일이 없군요
test.txt 라는 파일이 없군요
D:\Z>
"파일의 존재 여부를 체크"하는 배치파일인데, (1)번 예제에서는 IF ELSE 문으로 깔끔하게 처리되었습니다.
(2)번 예제는 전통적인 DOS 배치 파일의 IF문으로 같은 작업을 하는 것인데, IF문을 두 번 사용해야 하는 불편함이 있습니다.
그렇지만 배치 파일의 IF ELSE 문은, 일반 프로그래밍 언어의 그것과는 달리 그리 완벽하지 못하고 엉성한 면이 있습니다. 좀 복잡한 작업을 하려고 하면 이상한 에러가 나는 경우가 종종 있었습니다.
IF ELSE 문에 대한 도움말은 도스창(명령 프롬프트;cmd.exe)에서,
if /?
라고 입력하면 출력됩니다.
[출처] 도스배치 if 명령어|작성자 모꼬모지
'컴!' 카테고리의 다른 글
배치파일: 변수 / 상수 정리 (0) | 2020.07.22 |
---|---|
배치파일: GOTO 문 (0) | 2020.07.22 |
배치파일: Choice 문 (0) | 2020.07.22 |
배치파일 FOR 문 (0) | 2020.07.22 |
배치파일 기본 명령어 / 문법 (0) | 2020.07.22 |