컴!

배치파일 IF 문

WWIII 2020. 7. 22. 15:42
728x90
반응형

배치 파일의 문법은 간단하지만, 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 명령어|작성자 모꼬모지

728x90
반응형

'컴!' 카테고리의 다른 글

배치파일: 변수 / 상수 정리  (0) 2020.07.22
배치파일: GOTO 문  (0) 2020.07.22
배치파일: Choice 문  (0) 2020.07.22
배치파일 FOR 문  (0) 2020.07.22
배치파일 기본 명령어 / 문법  (0) 2020.07.22