안녕하세요! 윈도우 환경에서 특정 서비스가 실행 중인지 확인하고, 그 결과에 따라 작업을 실행하는 **배치 파일(.bat)**을 만들어보려고 합니다. 시스템 관리자나 IT 담당자라면 서비스 상태를 점검하고 자동으로 조치를 취하는 스크립트가 필요할 때가 많죠. 오늘은 실무에서 바로 써먹을 수 있도록 배워보도록 하겠습니다.
배치 파일(.bat)이란?
배치 파일은 윈도우 명령 프롬프트(CMD)에서 실행 가능한 명령어 모음을 텍스트 파일에 작성한 것입니다. 확장자는 .bat이며, 서비스 상태 확인, 프로그램 실행, 로그 기록 같은 작업을 자동화할 수 있어요. 이번 글에서는 서비스 확인 후 실행에 초점을 맞춰봅니다.
목표: 서비스 상태 확인 후 조치
- 상황: 특정 서비스(예: “Apache2.4” 또는 “wuauserv”)가 실행 중인지 확인.
- 동작:
- 실행 중이면 메시지 출력 후 프로그램 실행.
- 중지 상태면 서비스 시작 후 프로그램 실행.
배치 파일 작성 단계
1. 기본 도구 준비
- 텍스트 편집기: 메모장, VS Code 등 사용.
- 관리자 권한: 서비스 제어(sc 명령어)와 실행 권한 필요.
- 저장: .bat 확장자로 저장(예: check_service.bat).
2. 서비스 상태 확인 명령어
- SC QUERY: 서비스 상태를 확인하는 명령어.
3. 조건문 작성
- find 명령어로 상태 필터링 후 if로 분기 처리.
4. 배치 파일 예제
아래는 “Windows Update” 서비스(wuauserv)를 확인하고 실행하는 배치 파일입니다.
@echo off
echo 서비스 상태 확인 중...
REM 서비스 상태 확인
sc query wuauserv | find "RUNNING" >nul
REM 상태에 따라 분기
if %errorlevel% equ 0 (
echo Windows Update 서비스가 실행 중입니다.
REM 실행할 프로그램 추가
start notepad.exe
) else (
echo Windows Update 서비스가 중지 상태입니다. 시작합니다...
REM 서비스 시작
net start wuauserv
REM 시작 후 프로그램 실행
start notepad.exe
)
echo 작업 완료!
pause
코드 설명
- @echo off: 명령어 자체가 화면에 출력되지 않게 설정. 깔끔한 출력용.
- sc query wuauserv | find "RUNNING" >nul:
- if %errorlevel% equ 0:
- net start: 서비스 시작 명령어.
- start notepad.exe: 예시로 메모장 실행(원하는 프로그램으로 변경 가능).
- pause: 결과 확인 후 창 닫힘 방지.
고급 예제: 다중 서비스 확인
여러 서비스를 점검하고 싶다면 아래처럼 확장할 수 있어요:
@echo off
echo 다중 서비스 상태 확인 중...
REM 서비스 1: Windows Update
sc query wuauserv | find "RUNNING" >nul
if %errorlevel% equ 0 (
echo Windows Update: 실행 중
) else (
echo Windows Update: 중지 상태 - 시작 시도
net start wuauserv
)
REM 서비스 2: Apache2.4
sc query Apache2.4 | find "RUNNING" >nul
if %errorlevel% equ 0 (
echo Apache2.4: 실행 중
start httpd.exe
) else (
echo Apache2.4: 중지 상태 - 시작 시도
net start Apache2.4
start httpd.exe
)
echo 모든 작업 완료!
pause
실행 방법
- 파일 저장: check_service.bat로 저장.
- 관리자 권한 실행:
- 결과 확인: 콘솔에 상태 메시지 출력.
실무 팁: 배치 파일 최적화
- 서비스 이름 확인: services.msc에서 정확한 서비스 이름 확인(예: “wuauserv”, “Apache2.4”).
- 에러 처리:
net start wuauserv || echo 서비스 시작 실패! - 로그 기록:
echo %date% %time%: 작업 완료 >> log.txt - 예약 실행: 작업 스케줄러(Task Scheduler)로 주기적 실행 설정.
- 조건문 강화:
주의점
- 권한 문제: 관리자 권한 없으면 net start 실패.
- 서비스 이름 오류: 오타나 잘못된 이름 입력 시 동작 안 함.
- 의존성: 서비스가 다른 서비스에 의존하면 sc start로 의존성 포함 실행 고려.
배치 파일로 자동화 마스터하기, 다음 단계는?
서비스 확인 후 실행하는 배치 파일은 윈도우 환경에서 시스템 관리와 작업 자동화를 간단히 해결해줍니다. 이 기본기를 바탕으로 서버 모니터링, 백업 스크립트, 애플리케이션 배포까지 확장할 수 있죠. 다음 시간에는 PowerShell로 고급 서비스 관리 스크립트 작성하기와 배치 파일과 작업 스케줄러 연동으로 24/7 자동화 구축하기를 다뤄볼게요. 실무에서 빛나는 고급 팁을 기대해주세요!
궁금한 점 있으면 언제든 물어보세요. 효율적인 자동화 되세요!