본문 바로가기
기타

Windows 배치파일(Batch) 명령어 정리 - 개발 환경 설정부터 빌드, 파일 관리, 자동화까지

by Autosar 2026. 9. 28.
반응형

Windows 환경에서 반복적으로 수행하는 작업을 자동화할 때 Batch File(배치 파일)은 간단하면서도 유용한 도구다.

 

별도의 개발 환경이나 프로그램 없이 Windows에 기본적으로 포함된 `cmd.exe`를 이용할 수 있기 때문에 프로젝트의 빌드, 파일 복사, 로그 생성, 프로그램 실행, 환경 설정 등에 많이 사용된다.

 

특히 자동차 SW 개발 환경에서는 다음과 같은 작업을 배치 파로 자동화하는 경우가 많다.

  • 빌드 전 기존 결과물 삭제
  • 소스 및 설정 파일 복사
  • 컴파일러 실행
  • 결과물 생성 및 이동
  • 테스트 프로그램 실행
  • 로그 파일 생성
  • 여러 개의 Batch File 순차 실행
  • 개발 환경 및 경로 설정

이번 글에서는 이러한 작업에 활용할 수 있는 Windows Batch의 기본 문법을 정리한다.

 

1. Batch File이란?

 

배치 파일은 여러 개의 CMD 명령어를 하나의 파일에 작성하여 순차적으로 실행할 수 있도록 만든 스크립트 파일이다.

파일 확장자는 `.bat` 또는 `.cmd`를 사용한다.

 

2. 기본적인 Batch 문법

 

2.1 @echo off

Batch 파일을 실행할 때 명령어 자체가 콘솔에 출력되는 것을 숨긴다.

@echo off

echo Build Start

 

@는 해당 명령어 자체를 화면에 표시하지 않도록 하는 역할을 한다.

실무에서는 대부분의 Batch File 시작 부분에 다음과 같이 사용한다.

@echo off

 

2.2 REM — 주석

REM은 주석을 작성할 때 사용한다.

REM Build 시작
echo Build Start

REM 기존 결과물 삭제
del /q *.hex

 

긴 Batch File에서는 각 단계별로 주석을 작성해두면 유지보수가 편해진다.

REM ==================================================
REM Environment Setting
REM ==================================================

set "PROJECT_DIR=D:\Project"
set "OUTPUT_DIR=D:\Project\Output"

 

 

2.3 echo — 메시지 출력

콘솔에 문자열을 출력한다.

echo Build Start

 

빈 줄을 출력하고 싶다면 다음과 같이 사용할 수 있다.

echo.

 

실무에서는 진행 상태를 표시할 때 많이 사용한다.

echo.
echo ========================================
echo          BUILD START
echo ========================================
echo.

 

2.4 title — CMD 창 제목 설정

CMD 창의 제목을 변경한다.

title ECU Build Script

 

여러 개의 Batch File을 동시에 실행하는 환경에서는 어떤 작업을 수행하고 있는지 구분하기 편하다.

 

 

3. 변수 사용하기

 

Batch File에서 가장 중요한 문법 중 하나가 변수다.

 

3.1 set

변수는 set 명령어로 생성한다.

set "PROJECT_DIR=D:\Project"
set "OUTPUT_DIR=D:\Project\Output"

 

변수의 값은 %변수명%으로 사용할 수 있다.

echo Project Path : %PROJECT_DIR%
echo Output Path  : %OUTPUT_DIR%

 

권장 형태

다음과 같이 큰따옴표를 변수 전체에 사용하는 방식을 권장한다.

set "PROJECT_DIR=D:\Project"

 

다음과 같이 작성하면 경로 끝에 의도하지 않은 공백이 들어가는 문제를 방지할 수 있다.

set PROJECT_DIR=D:\Project

 

보다는

set "PROJECT_DIR=D:\Project"

 

형태가 안전하다.

3.2 set /p — 사용자 입력

사용자로부터 값을 입력받을 수도 있다.

set /p BUILD_TYPE="Build Type을 입력하세요: "

echo 선택한 Build Type: %BUILD_TYPE%

 

예를 들어

Build Type을 입력하세요: Release
선택한 Build Type: Release

 

와 같이 사용할 수 있다.

 

 

4. 디렉토리 이동


4.1 cd

현재 작업 디렉토리를 변경한다.

cd C:\Project

 

하지만 다른 드라이브로 이동해야 하는 경우에는 cd /d를 사용하는 것이 좋다.

cd /d D:\Project

 

예를 들어 현재 위치가 C:\ 이고 다음과 같이 실행하면

cd D:\Project

 

드라이브가 변경되지 않을 수 있다.

 

따라서 Batch File에서는 다음과 같이 사용하는 것을 권장한다.

cd /d D:\Project

 

 

5. 파일 및 폴더 관리

 

5.1 MD / MKDIR

디렉토리를 생성한다.

mkdir Output

 

또는

md Output

 

이미 존재하는 디렉토리를 대상으로 사용하는 경우에도 Batch 자동화에서 자주 활용할 수 있다.

if not exist "Output" mkdir "Output"

 

 

5.2 DEL

파일을 삭제한다.

del test.txt


주요 옵션은 다음과 같다.

  • /Q: 삭제 확인 메시지 생략
  • /F: 읽기 전용 파일도 강제 삭제
  • /S: 하위 디렉토리까지 검색

예를 들어 기존 .hex 파일을 모두 삭제하려면 다음과 같이 사용할 수 있다.

del /Q "Output\*.hex"

 

 

5.3 RD / RMDIR

디렉토리를 삭제한다.

rmdir /S /Q "Output"

 

/S는 하위 파일 및 디렉토리까지 삭제하고, /Q는 삭제 확인을 생략한다.

 

따라서 사용 시 주의해야 한다.

rmdir /S /Q "D:\Project\Output"

 

위 명령어는 지정된 폴더의 내용까지 모두 삭제한다.

 

 

5.4 COPY

파일을 복사한다.

copy "source.txt" "D:\Backup\source.txt"

 

여러 파일을 복사할 때는 xcopy 또는 robocopy를 사용하는 것이 더 적합할 수 있다.

 

 

5.5 MOVE

파일이나 폴더를 이동한다.

move "test.hex" "Output\test.hex"

 

빌드 결과물을 특정 폴더로 이동할 때 활용할 수 있다.

 

 

6. 조건문

 

Batch File에서도 if를 이용하여 조건에 따라 실행할 명령을 결정할 수 있다.

 

6.1 파일 존재 여부 확인

if exist "test.hex" (
    echo HEX File exists.
) else (
    echo HEX File not found.
)

 

실무에서는 빌드 결과물이 정상적으로 생성되었는지 확인할 때 유용하다.

if not exist "Output\ECU.hex" (
    echo ERROR: HEX file not found.
    exit /b 1
)

 

6.2 문자열 비교

if "%BUILD_TYPE%"=="Release" (
    echo Release Build
) else (
    echo Debug Build
)

 

변수가 비어 있는 경우까지 고려하면 다음과 같이 작성하는 것이 안전하다.

if "%BUILD_TYPE%"=="Release" (
    echo Release Build
)

 

6.3 숫자 비교

Batch에서는 숫자 비교에 다음과 같은 연산자를 사용할 수 있다.

  • EQU: 같다
  • NEQ: 다르다
  • LSS: 작다
  • LEQ: 작거나 같다
  • GTR: 크다
  • GEQ: 크거나 같다

예:

if %ERROR_COUNT% GTR 0 (
    echo Build Error
)

 

 

7. FOR 반복문

반복 작업을 수행할 때 FOR를 사용한다.

 

7.1 파일 목록 처리

현재 디렉토리의 .log 파일을 출력한다.

for %%F in (*.log) do (
    echo Log File: %%F
)

 

Batch File에서는 반복 변수 앞에 %%를 사용한다.

%%F

 

CMD 창에서 직접 실행할 때는 %F를 사용하지만, .bat 파일에서는 %%F를 사용한다는 차이가 있다.

 

정리

 

Batch File은 문법 자체는 단순하지만 파일 관리, 빌드 자동화, 테스트 자동화, 프로그램 실행, 로그 관리​를 조합하면 개발 환경에서 상당히 유용하게 사용할 수 있다. 특히 자동차 SW 개발 환경에서는 다음과 같은 작업을 Batch File 하나로 묶어두면 반복 작업을 줄일 수 있다.

 

개인적으로 Batch File을 처음 작성한다면 위의 명령어부터 익혀두는 것을 권장한다.

반응형