여러가지를 보고 듣고 공부하게 되면서 윈도우의 .bat
이라는 확장자를 가진 파일을 접하게 되었다.
그런데 아직 상당한 부분을 모르는 나로써는 어디에 사용하고 어떤 목적인지 등 batch script라는 것에 대해 근본적인 이유에 대해 궁금해졌다.
이번 포스트는 순서도 전문가들이 볼 때 먼저 알아야하는 내용들이 뒤죽박죽으로 작성되어 보기 불편할 수도 있다.
어떤 반복되는 작업을 일괄적으로 한꺼번에 처리하는 데 사용하는 스크립트로, 간단한 프로그래밍 언어의 한 종류라고도 할 수 있다.
특히 반복적인 작업이 필요한 경우, 수작업으로 일일이 반복하는 것보다 스크립트를 작성해 스크립트를 작동하는 간단한 작업을 통해 귀찮은 일들을 좀 더 자동화하는 것에 초점을 두면 좋을 것 같다.
ex1. 특정 경로에 있는 데이터를 백업하기 위한 파일들을 복사한 후 잘 복사되었는지 확인하는 작업
ex2. 프롬프트에서 너무나도 긴 명령어를 입력하여 실행하는 작업을 자주 해야하는 경우
프로그래밍은 인간의 귀차니즘에 의해서 탄생했다는데 맞는 말인 것 같다.
ECHO ON, ECHO OFF
로 처리과정 등을 화면에 출력하거나 감추는 등의 역할을 한다.
ECHO ON
이 기본값이라고 한다.- Shell Script에서 echo 를 통해 다음 문장을 출력하는 것을 생각하면 이해하기 쉬운 것 같다.
- 따라서 스크립트 내에
@ECHO OFF
라고 스크립트에 입력하면 후에 입력한 문장이 보이지 않는다.
REM [설명문]
형태로 작성하여 설명문 부분을 컴파일 할 내용에서 제외하고 컴파일이 진행될 수 있도록 하며, 주석이라는 말 그대로의 역할을 한다.IF EXIST [조건] [명령]
으로 조건에 해당하는 파일이나 변수에 입력된 값이 '존재'한다면 다음에 작성한 명령을 수행하는 구조이다.FOR %%변수명 IN (SET) DO Command
이다.if '%errorlevel%' NEQ '0' (
goto User
) else (
goto Admin
)
:User
echo you are not admin
:Admin
echo you are admin
에러레벨의 수준에 따라 각각 GOTO를 통해 User와 Admin이 있는 Label로 이동하는 것을 볼 수 있다.일반적으로 c, java, python 등의 언어에서 비교연산자가 '==', '!=', '<', '>' 등으로 사용한다.
batch script를 완전 처음 봤을 때 의미를 몰랐던 것들 중 비교연산자였는데 기호로 표시하지 않는다는 점으로 보아 나처럼 처음 보는 사람은 모를수 있겠다는 생각이 들어 따로 검색해 정리해보았다.
비교연산자 | 설명 | 사용 예시 | 의미 |
---|---|---|---|
equ | equal(동일) | %var1% equ %var2% | var1과 var2는 동일하다. |
neq | not equal(부정) | %var1% neq %var2% | var1과 var2는 동일하지 않다. |
gtr | greater(초과) | %var1% gtr %var2% | var1이 var2보다 크다. |
geq | greater than equal(이상) | %var1% geq %var2% | var1이 var2보다 크거나 같다. |
leq | less than equal(이하) | %var1% leq %var2% | var1이 var2보다 작거나 같다. |
lss | less(미만) | %var1% lss %var2% | var1이 var2보다 작다. |
== | 문자 비교에서 사용 | %str1% == %str2% | str1과 str2의 문자가 같다. |
/i %str1% == %str%
처럼 활용할 수 있다.batch script로 구성된 파일을 처음 보고 그 파일을 기준으로 작성한 포스트이므로 추가로 더 공부하고 알게되는 내용이 있다면 추가 포스팅 할 것이다.