
배치 파일은 윈도우 환경에서 여러 명령어를 자동으로 실행할 수 있는 강력한 도구입니다. 특히 여러 개의 명령어 창을 동시에 열어야 하거나, 특정 프로세스가 완료된 후 추가 작업을 실행해야 하는 시나리오에서 매우 유용합니다. 이 글에서는 간단한 예제를 통해 여러 개의 명령어 창을 실행하고, 상호작용을 설정하는 방법을 알아보겠습니다.
이 튜토리얼을 통해 배울 수 있는 내용:
배치 파일을 사용해 여러 개의 명령어 창을 자동으로 실행하는 방법
특정 프로세스가 완료되었는지 확인하는 방법
조건에 따라 추가 명령어를 실행하는 상호작용 설정 방법
이 예제에서는:
첫 번째 명령어 창에서 애뮬레이터를 실행합니다.
두 번째 명령어 창에서 애뮬레이터의 상태를 계속 확인합니다.
애뮬레이터가 실행 완료되었다고 판단되면 특정 설정 명령어를 수행합니다.
먼저, 우리가 작성할 .bat 파일의 개요는 다음과 같습니다.
@echo off
REM 첫 번째 명령어 창을 열어 애뮬레이터 실행
start cmd /k "echo 애뮬레이터 실행 중... & timeout /t 10 & echo 애뮬레이터가 시작되었습니다."
REM 5초 대기 후 두 번째 명령어 창을 열어 애뮬레이터 상태 확인
timeout /t 5
start cmd /k "echo 애뮬레이터 상태 확인 중... & timeout /t 5 & echo 애뮬레이터 실행 확인됨! & echo 설정 명령어 실행 중... & timeout /t 2 & echo 설정 완료!"
위의 코드를 메모장에 복사합니다.
파일을 example.bat로 저장합니다. (파일 형식을 '모든 파일'로 선택한 후 .bat 확장자를 붙입니다.)
저장한 배치 파일을 더블 클릭해 실행합니다.
@echo off: 명령어를 실행할 때 명령어 자체는 화면에 보이지 않도록 설정합니다.
start cmd /k: 새로운 명령어 창을 열어 특정 명령어를 실행합니다. 여기서 /k는 명령어를 실행한 후 창을 닫지 않도록 합니다.
timeout /t X: X초 동안 대기합니다. 이 명령어는 프로세스가 완료될 때까지 기다리는 데 사용됩니다.
애뮬레이터 실행: 첫 번째 명령어 창이 열리고, 애뮬레이터를 시작합니다. 여기서 timeout /t 10은 10초 동안 대기하는 데 사용되며, 실제 상황에서는 애뮬레이터가 완전히 실행될 시간을 예상해 설정합니다.
애뮬레이터 상태 확인: 두 번째 명령어 창이 열리고, 애뮬레이터 상태를 확인합니다. timeout /t 5는 애뮬레이터가 실행되었는지 확인하는 데 필요한 시간입니다.
설정 명령어 실행: 애뮬레이터가 성공적으로 실행되었다고 확인되면, 설정 명령어를 수행합니다.
이 예제에서는 간단한 로컬 웹 서버를 실행하고, 서버가 실행되는 동안 다른 작업을 수행하는 배치 파일을 만들어 보겠습니다. 예제는 여러 개의 명령어 창을 열고, 각 창이 서로 다른 작업을 수행하게 구성해 보겠습니다.
@echo off
REM 웹 서버 자동 실행 예제
REM 첫 번째 창: 웹 서버 실행
echo 첫 번째 창에서 로컬 웹 서버를 실행합니다...
start cmd /k "python -m http.server 8000"
REM 서버가 시작될 시간을 대기 (5초)
timeout /t 5 /nobreak >nul
REM 두 번째 창: 서버 상태 확인
echo 두 번째 창에서 서버 상태를 확인합니다...
start cmd /k "curl http://localhost:8000"
REM 로그 파일 생성 및 분석
echo 로그 파일을 생성하고 분석하는 중입니다...
echo "서버 상태: 성공적으로 실행됨" > server_log.txt
findstr /i "성공" server_log.txt
echo 모든 작업이 완료되었습니다!
pause
명령어 및 문법 설명
@echo off
설명: 배치 파일이 실행될 때 명령어가 화면에 출력되지 않도록 설정합니다.
용도: 콘솔 출력이 깔끔하게 유지되도록 합니다.
echo 첫 번째 창에서 로컬 웹 서버를 실행합니다...
설명: echo 명령어로 메시지를 출력해 웹 서버를 실행할 준비가 되었음을 사용자에게 알립니다.
용도: 사용자에게 현재 작업의 상태를 설명합니다.
start cmd /k "python -m http.server 8000"
설명: start 명령어로 새로운 명령어 창을 엽니다. cmd /k는 명령어 창을 열고 닫지 않고 명령어를 실행합니다. python -m http.server 8000은 로컬에서 8000번 포트로 간단한 웹 서버를 실행합니다.
용도: 웹 서버를 실행하는 데 사용됩니다.
timeout /t 5 /nobreak >nul
설명: 5초 동안 대기합니다. /t 5는 대기 시간을 5초로 설정하고, /nobreak는 대기 중에 사용자가 중단하지 못하게 합니다. >nul은 대기 메시지를 숨깁니다.
용도: 웹 서버가 실행될 시간을 확보합니다.
echo 두 번째 창에서 서버 상태를 확인합니다...
설명: echo 명령어를 사용하여 사용자에게 두 번째 작업을 알립니다.
용도: 상태 확인 작업을 안내합니다.
start cmd /k "curl http://localhost:8000"
설명: 새로운 명령어 창을 열어 curl 명령어를 실행합니다. curl은 HTTP 요청을 보내는 도구로, 로컬 웹 서버의 상태를 확인합니다.
용도: 웹 서버가 정상적으로 실행되는지 확인합니다.
echo 로그 파일을 생성하고 분석하는 중입니다...
설명: 로그 파일 생성 작업을 사용자에게 알립니다.
용도: 로그 분석 작업을 수행하기 전 메시지를 출력합니다.
echo "서버 상태: 성공적으로 실행됨" > server_log.txt
설명: echo 명령어로 "서버 상태: 성공적으로 실행됨"이라는 메시지를 server_log.txt 파일에 씁니다.
용도: 로그 파일을 생성하거나 내용을 기록할 때 사용합니다.
findstr /i "성공" server_log.txt
설명: findstr 명령어는 특정 문자열을 파일에서 검색합니다. /i는 대소문자를 구분하지 않고 검색합니다. "성공"이라는 단어를 server_log.txt에서 찾습니다.
용도: 로그 파일에서 특정 단어를 검색하여 확인합니다.
pause
설명: 실행을 일시 중지하며, 사용자가 키를 누를 때까지 대기합니다.
용도: 사용자에게 결과를 확인할 기회를 제공합니다.
이 배치 파일은 먼저 로컬 웹 서버를 실행한 다음, 다른 명령어 창에서 서버 상태를 확인합니다.
그런 다음 로그 파일을 생성하고, 로그에서 특정 단어를 검색하여 서버 상태를 기록하고 분석합니다.
이 예제는 웹 서버를 관리하거나 자동화된 테스트 작업을 수행할 때 매우 유용할 수 있습니다.
Q: 여기서
REM이 무엇인가요..?
REM은 배치 파일에서 주석(Comment)을 나타내는 명령어입니다. REM으로 시작하는 줄은 실행되지 않으며, 코드에 설명이나 메모를 추가할 때 사용됩니다. 주석을 추가함으로써 코드를 더 이해하기 쉽게 만들 수 있습니다.
이 글에서는 간단한 배치 파일 예제를 통해 여러 개의 명령어 창을 열고 서로 상호작용하는 방법을 알아보았습니다. 배치 파일을 잘 활용하면 반복적인 작업을 효율적으로 처리할 수 있습니다. 더 많은 기능을 추가하며 자신만의 자동화 스크립트를 만들어보시길 바랍니다 :)