Windows

배치(.bat)파일을 IF문 이용하여 작성하기(스크립트).

basickey 2014. 2. 13. 18:03

패치파일을 이용하여 자동 스크립트를 작성하기 위해

조건문인 IF는 필수로 들어 가게 됩니다.

 

프로그래밍을 기초라도 잠깐 보신분이라면 쉽게 사용하실 수 있지만

햇갈리는 부분이 간혹있기에 이렇게 포스팅 합니다.

 

먼저 간단한 예제를 보자면 다음과 같습니다.

@echo off

:Start
echo 웹서비스 프로그램을 설치한 경로를 입력해주세요.(ex. C:\web\)
SET /P web=입력 :

IF "%web%"=="" GOTO Error
IF exist "%web%" (
 echo "%web%" 항목을 찾았습니다.
 echo 결과는 아래와 같습니다.
 dir %web%
) else (
 echo "%web%" 항목을 찾을 수 없습니다.
)


GOTO End

:Error
ECHO 다시입력해주세요.


GOTO Start
:End
SET /P re=다시 입력 하시겠습니까?[Y/N] :

IF "%re%"=="y" (
 GOTO Start
) else (
 echo 종료합니다!
)

pause > null

 

첫번째로 echo 에 대해 먼저 알아 보겠습니다.

@echo는 에코 서비스를 설정을 하는 명령어 이며 이후 실행되는 명령어에 대해 화면에 표시되도록 해줍니다.

그림으로 보는게 이해가 가장 빠를거라 생각 되네요.

 

  • echo 설정 화면

    @echo
    dir c:\test\

     

    echo.
    echo.


    pause

     

    - 실행 결과

     

     

    • echo off 설정 화면

    @echo off
    dir c:\test\

    echo.
    echo.


    pause

     

    -실행 결과

     

     

    추가로 echo. 은 cmd 창에서 줄 바꿈의 기능을 수행합니다.

    pause는 실행 후 화면을 일시정지 상태 "계속하려면..." 메시지를 나타내 줍니다.

     

    두번째로는 레이블 ( : 표시) 입니다.

    간단하게 주소라고 생각하시면 되고 GOTO 명령어와 함께 사용됩니다.

    가장 위의 예제에서 보면 " GOTO :Start " 라고 있는 부분은 해당 레이블이 있는 행으로 이동하라는 의미가 됩니다.

     

    세번째는 환경 변수입니다.

    SET 이라는 명령어를 실행하면 시스템에 등록되어있는 환경변수를 확인해 볼 수 있습니다.

    SET /P 변수명=[promptString]

    이와 같은 형식으로 사용하며 /P 옵션을 사용하여 사용자의 입력을 받습니다.

    입력값은 환경변수(본문에서는 web에 해당)에 임시저장되며, 이러한 환경변수는 %변수명% 을 이용하여 불러올 수 있습니다.

     

    일례로 cmd에서 현재 어느 위치에 있건 c:\windows로 이동을 하고 싶다면 아래와 같이 해주시면 됩니다.

     

     

    환경 변수... 많이 들어본 단어죠..

    여기에서 확인도 가능 합니다.

     

     

     

     

    다음은 가장 중요한 IF 입니다.

    간단하게는 아래와 같은 형식으로 사용합니다.

    IF [조건연산자] [조건] 실행명령어 

     

    *조건 연산자

    EQU - 같음          
    NEQ - 같지 않음     
    LSS - 보다 작은        
    LEQ - 작거나 같음
    GTR - 보다 큰
    GEQ - 크거나 같음

     

     

    if /?

     

    배치 파일에서 조건 처리를 수행합니다.

    IF [NOT] ERRORLEVEL 숫자 명령어
    IF [NOT] 문자열1==문자열2 명령어
    IF [NOT] EXIST 파일이름 명령어

      NOT               조건이 거짓이면 명령을 수행하라고 지정합니다.

      ERRORLEVEL 숫자   마지막 프로그램 실행에서 반환된 마침 코드가
                        지정된 숫자보다 크거나 같으면, 조건을 참으로 지정합니다.

      문자열1==문자열2  지정된 문자열이 일치하면 조건을 참으로 지정합니다.

      EXIST 파일이름    지정된 파일이름이 있으면 조건을 참으로 지정합니다.

      명령어            조건이 만족되면 실행할 명령을 지정합니다.
                        지정된 조건이 FALSE인 경우에는
                        ELSE 키워드 다음에 명령을 수행할
                        ELSE 명령어가 따릅니다.

    ELSE 구문은 IF 명령 다음의 명령줄과 동일한 행에 위치해야 합니다.
    예:

        IF EXIST filename. (
            del filename.
        ) ELSE (
            echo filename. missing.
        )

     

    IF문의 가장 중요한 부분은 위에 주황색 표시된 부분입니다.

    줄 안바꿔 주면 오류납니다 ㅎㅎ

     

     

    마지막 pause > null 은 실행한 결과값을 null로 보내라는 뜻으로 쓰레기통에 버린다고 생각하시면 되겠네요.

     

    허접하지만 글이 너무 길어서 이만...