자동화 스크립트, DOS Batch 파일과 활용 방법

DOS Batch 파일이란?

여러대의 PC를 동일한 환경으로 설정하거나, 반복된 작업을 수행해야할때. 우리는 고민에 빠집니다.
오늘 소개할 DOS Batch 파일은 Windows 운영 체제에서 일련의 명령어를 자동으로 실행할 수 있게 해주는 .bat 확장자를 가진 일종의 명령어 스크립트 파일입니다. 복잡한 작업을 자동화하는 데 매우 유용하여, DOS 명령어에 이어 다루어 볼까 합니다.

Notepad로 저장할때 bat 파일의 확장자로 저장하면 되며, 간단하게 아래와 같이 작성해서 만들어서 구동해 볼 수 있습니다.

(예시) 윈도우 점검 배치 파일
(예시) 윈도우 점검 배치 파일 실행


기본 Batch 명령어

CMD 배치 파일에서 자주 사용되는 고급 명령어는 다음과 같습니다.

 

GOTO 명령어

특정 레이블로 실행 흐름을 이동시킵니다.

:label
echo This is a label
GOTO label

 

IF 조건문

조건에 따라 명령을 실행합니다.

IF "%1"=="param1" (
    ECHO First parameter is "%1"
) ELSE (
    ECHO First parameter is not "param1"
)

 

FOR 루프

파일이나 문자열을 반복 처리합니다.

FOR %%I IN (*.txt) DO echo %%I

 

SET 변수 설정

변수를 설정하고 사용합니다.

SET myvar=Hello
ECHO %myvar%

 

CALL 명령어

다른 배치 파일을 호출합니다.

CALL other_script.bat

 

SHIFT 명령어

명령줄 인수(%1, %2, %3, ...)를 한 단계씩 왼쪽으로 이동시키는 역할을 합니다. 이 명령어를 사용하면 여러 명령줄 인수를 처리할 때 편리하게 사용할 수 있습니다.

@echo off
:loop
if "%1"=="" goto end
echo 현재 인수: %1
SHIFT
goto loop
:end
echo 모든 인수를 처리했습니다.
C:\>example.bat 첫번째 두번째 세번째
현재 인수: 첫번째
현재 인수: 두번째
현재 인수: 세번째
모든 인수를 처리했습니다.

 

ERRORLEVEL 확인

이전 명령의 종료 코드를 확인합니다.

IF ERRORLEVEL 1 ECHO An error occurred

 

파일 존재 여부 확인

IF EXIST filename.txt (
    ECHO File exists
) ELSE (
    ECHO File does not exist
)

메뉴 만드는 방법

 

1. 메뉴 구조 설계

먼저 메인 메뉴와 하위 메뉴 항목들을 설계합니다. 예를 들어:

@echo off
:menu
cls
echo 1. 옵션 1
echo 2. 옵션 2  
echo 3. 종료
set /p choice=선택하세요: 

 

 

2. 사용자 입력 처리

사용자의 선택에 따라 분기 처리를 합니다:

if "%choice%"=="1" goto option1
if "%choice%"=="2" goto option2 
if "%choice%"=="3" goto end
goto menu

 

3. 각 옵션에 대한 처리

선택된 옵션에 대한 작업을 수행하고 메인 메뉴로 돌아갑니다:

:option1
echo 옵션 1을 선택하셨습니다.
pause
goto menu

:option2  
echo 옵션 2를 선택하셨습니다.
pause
goto menu

:end
echo 프로그램을 종료합니다.
exit

 

4. 서브메뉴 구현

필요한 경우 서브메뉴를 추가로 구현할 수 있습니다:

:submenu
cls
echo 1. 서브 옵션 1
echo 2. 서브 옵션 2
echo 3. 메인 메뉴로 돌아가기
set /p subchoice=선택하세요: 

if "%subchoice%"=="1" goto suboption1
if "%subchoice%"=="2" goto suboption2
if "%subchoice%"=="3" goto menu
goto submenu

Batch 파일 예제

 

간단한 인사 프로그램

@echo off
echo 안녕하세요! 당신의 이름은 무엇인가요?
set /p name=
echo 반갑습니다, %name%님!
pause

 

파일 백업 스크립트

@echo off
xcopy C:\중요문서 D:\백업\중요문서 /D /E /Y /I
echo 백업이 완료되었습니다.
pause

 

시스템 점검 스크립트

@echo off
chcp 65001 >nul

:menu
cls
echo Windows 장애 점검 메뉴
echo 1. 디스크 점검
echo 2. 메모리 점검
echo 3. 네트워크 점검
echo 4. 종료

set /p choice=선택하세요 (1-4): 

if "%choice%"=="1" goto disk
if "%choice%"=="2" goto memory
if "%choice%"=="3" goto network
if "%choice%"=="4" goto end

echo 잘못된 선택입니다. 다시 선택해주세요.
pause
goto menu

:disk
echo 디스크 점검을 시작합니다...
chkdsk C: /f
pause
goto menu

:memory
echo 메모리 점검을 시작합니다...
mdsched.exe
echo 메모리 진단 도구가 실행되었습니다. 재부팅 후 진단이 수행됩니다.
pause
goto menu

:network
echo 네트워크 점검을 시작합니다...
ipconfig /all
ping www.google.com
pause
goto menu

:end
echo 프로그램을 종료합니다.
exit

Batch 파일 활용 팁

  • 자동 실행: 작업 스케줄러를 사용하여 Batch 파일을 정기적으로 실행할 수 있습니다.
  • 에러 처리: IF ERRORLEVEL 명령을 사용하여 오류를 처리할 수 있습니다.
  • 변수 사용: SET 명령을 사용하여 변수를 설정하고 %변수명%으로 사용할 수 있습니다.

DOS Batch 파일은 Windows 환경에서 작업을 자동화하는 강력한 도구입니다. 기본 명령어만 알아도 일상적인 작업을 크게 간소화할 수 있으며, 더 복잡한 스크립트를 작성하여 고급 작업도 수행할 수 있습니다. 

아참, 그리고 한글이 깨질때는 인코딩 문제입니다. chcp 65001 >nul 명령을 추가해줘 보세요.