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을 처음 작성한다면 위의 명령어부터 익혀두는 것을 권장한다.
'기타' 카테고리의 다른 글
| ECU Reset과 MCU Reset의 차이 - 자동차 ECU 개발에서 알아야 할 Reset 동작 (0) | 2026.09.28 |
|---|---|
| AUTOSAR 경력 1~3년차 개발자 면접 예상 질문 및 답변 20선 (0) | 2026.09.16 |
| 자동차 SW 개발자가 알아야 할 ASPICE란? 개발 프로세스부터 SWE.1~SWE.6까지 (0) | 2026.09.10 |
| 자동차 SW 제어기 ECU 빌드 후 생성되는 파일 총정리 — ELF, HEX, SRE, MAP, DLA, DNM, OPT 등등 (0) | 2026.09.08 |
| 자동차 개발에서 DV, PV, ESIR, ISIR이란? 양산 전 반드시 거치는 검증 프로세스 총정리 (0) | 2026.06.30 |