윈도우 배치 파일 (.bat) 완전 정복 - 구조, 명령어, 자동화


    배치 파일은 특별한 개발 지식 없이도 윈도우 환경에서 반복 작업을 자동화할 수 있는 강력한 도구로 윈도우 배치 파일에 대해 쉽게 설명드립니다.


    1. 배치 파일이란?


    배치 파일

    배치 파일(Batch File)은 확장자가 '.bat' 또는 '.cmd' 인 텍스트 파일입니다. 윈도우 명령 프롬프트(cmd.exe)가 파일 안의 명령어를 위에서 아래로 순서대로 실행해 줍니다.

    쉽게 말해 "내가 키보드로 cmd에 직접 입력할 명령어들을 미리 파일에 적어두고, 필요할 때 한 번에 실행하는 것"입니다.

    배치 파일이 유용한 경우

    • 백업 자동화 : 매일 특정 시간에 중요 폴더를 다른 경로로 복사
    • 개발 환경 세팅 : 여러 서버나 프로그램을 순서대로 한꺼번에 실행
    • 파일 정리 : 특정 확장자 파일을 모아 이동하거나 삭제
    • 윈도우 시작 시 자동 실행 : 시작 프로그램에 등록해 부팅 시 필요한 앱 일괄 실행
    • 반복 명령 자동화 : 여러 파일명을 일괄 변경하거나 로그 파일 정리

    배치 파일 만드는 방법

    만드는 방법은 매우 간단합니다.
    1. 메모장(Notepad)을 엽니다.
    2. 원하는 명령어를 입력합니다.
    3. `파일 > 다른 이름으로 저장`에서 파일 형식을 모든 파일(*.*)로 바꾸고, 파일명 끝에 .bat 을 붙여 저장합니다.


    배치파일


    2. 기본 구조와 핵심 명령어


    기본 골격

    @echo off
        REM 여기에 명령어를 작성합니다.
    exit

    기본 명령어 정리

    @echo off - 배치 파일 실행 시 각 명령어가 화면에 그대로 출력되는 것을 막습니다. `@`는 이 줄 자체도 출력하지 않도록 합니다. 거의 모든 배치 파일 첫 줄에 관례적으로 씁니다.

    echo - 텍스트를 화면에 출력합니다. 진행 상황을 알려주거나 디버깅 시 유용합니다.

    start - 지정된 프로그램이나 파일을 별도의 창으로 실행합니다.
    • `/d 경로` 프로그램 시작 디렉터리 지정
    • `/b`         새 창 없이 백그라운드 실행
    • `/wait` 실행한 프로그램이 종료될 때까지 대기
    • `/min` 최소화된 상태로 실행

    copy - 파일을 복사합니다.

    del - 파일을 삭제합니다. `/q` 옵션을 쓰면 확인 없이 바로 삭제합니다.

    pause - "계속하려면 아무 키나 누르십시오..." 메시지를 표시하며 대기합니다. 스크립트 실행 결과를 확인할 때 유용합니다.

    REM - 주석입니다. 실행되지 않으며 코드 설명을 적을 때 사용합니다.

    변수 선언 'set'

    @echo off
    set NAME=Alice
    set BACKUP_PATH=D:\Backup
    echo %NAME%님의 백업 경로: %BACKUP_PATH%

    사용자 입력 받기

    @echo off
    set /p USERNAME=이름을 입력하세요: 
    echo 안녕하세요, %USERNAME%님!
    pause

    숫자 연산

    set /a RESULT=10+5
    echo 결과: %RESULT%
    REM 출력: 15

    환경변수 활용

    • echo 사용자 홈 폴더: %USERPROFILE%
    • echo 시스템 경로: %PATH%
    • echo Java 경로: %JAVA_HOME%
    • echo 시스템 드라이브: %SystemDrive%
    • echo 현재 날짜: %DATE%
    • echo 현재 시간: %TIME%


    3. 조건문 / 반복문 / 흐름제어


    if - 조건문

    if exist test.txt (
        echo 파일이 존재합니다.
    ) else (
        echo 파일이 없습니다.
    )

    for - 반복문

    for %%f in (C:\logs\*.log) do (
        echo 처리 중: %%f
        del "%%f"
    )

    GOTO - 레이블로 이동

    특정 레이블로 실행 흐름을 이동합니다. 레이블은 `:이름` 형식으로 선언합니다.
    @echo off
    goto START

    :ERROR
    echo 오류가 발생했습니다.
    goto END

    :START
    echo 작업을 시작합니다.
    if not exist C:\data goto ERROR
    echo 데이터 폴더 확인 완료.

    :END
    echo 종료합니다.
    exit

    CALL - 다른 배치 파일 호출

    CALL`로 호출한 배치 파일이 끝나면 다시 원래 파일로 돌아와 다음 명령을 실행합니다. 이를 통해 배치 파일을 모듈처럼 분리해 재사용할 수 있습니다. 같은 파일 내 서브루틴 호출도 가능합니다.
    @echo off
    call :BACKUP C:\source D:\dest
    call :BACKUP C:\data D:\data_backup
    exit /b

    :BACKUP
    echo %1 → %2 백업 중...
    xcopy "%1" "%2" /e /i /y
    exit /b

    댓글 쓰기

    0 댓글