서비스 확인 후 실행하는 배치 파일(.bat) 만드는 방법: 윈도우 자동화 완벽 가이드

안녕하세요! 윈도우 환경에서 특정 서비스가 실행 중인지 확인하고, 그 결과에 따라 작업을 실행하는 **배치 파일(.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

 

코드 설명

  1. @echo off: 명령어 자체가 화면에 출력되지 않게 설정. 깔끔한 출력용.
  2. sc query wuauserv | find "RUNNING" >nul:
  3. if %errorlevel% equ 0:
  4. net start: 서비스 시작 명령어.
  5. start notepad.exe: 예시로 메모장 실행(원하는 프로그램으로 변경 가능).
  6. 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

 

실행 방법

  1. 파일 저장: check_service.bat로 저장.
  2. 관리자 권한 실행:
  3. 결과 확인: 콘솔에 상태 메시지 출력.

 

실무 팁: 배치 파일 최적화

  • 서비스 이름 확인: services.msc에서 정확한 서비스 이름 확인(예: “wuauserv”, “Apache2.4”).
  • 에러 처리:
    net start wuauserv || echo 서비스 시작 실패!
  • 로그 기록:
    echo %date% %time%: 작업 완료 >> log.txt
  • 예약 실행: 작업 스케줄러(Task Scheduler)로 주기적 실행 설정.
  • 조건문 강화:

 

주의점

  • 권한 문제: 관리자 권한 없으면 net start 실패.
  • 서비스 이름 오류: 오타나 잘못된 이름 입력 시 동작 안 함.
  • 의존성: 서비스가 다른 서비스에 의존하면 sc start로 의존성 포함 실행 고려.

 

배치 파일로 자동화 마스터하기, 다음 단계는?

서비스 확인 후 실행하는 배치 파일은 윈도우 환경에서 시스템 관리와 작업 자동화를 간단히 해결해줍니다. 이 기본기를 바탕으로 서버 모니터링, 백업 스크립트, 애플리케이션 배포까지 확장할 수 있죠. 다음 시간에는 PowerShell로 고급 서비스 관리 스크립트 작성하기와 배치 파일과 작업 스케줄러 연동으로 24/7 자동화 구축하기를 다뤄볼게요. 실무에서 빛나는 고급 팁을 기대해주세요!

궁금한 점 있으면 언제든 물어보세요. 효율적인 자동화 되세요!

댓글

Designed by JB FACTORY