본문으로 바로가기

윈도우즈 서버 진단 배치파일 작성방법 – 0.3 배치파일 고급

 

 

1. 배치파일 조건문

조건을 주어 참과 거짓을 판별하고 싶을 때 사용합니다. 진단 배치파일 작성 시 가장 많이 사용합니다.

 

가. IF, IF NOT

예시) IF %A%==1 ECHO A는 1입니다.

예시) IF NOT %A%==0 ECHO A는 0이 아닙니다.

 

나. ELSE

예시)

IF %A%==1 (

ECHO A는 1입니다.

)ELSE (

ECHO A는 1이 아닙니다.

)

 

다. IF ERRORLEVEL 1

배치파일 실행 도중 에러가 발생하면 0 이외의 값(1, 2, 3…)을 반환하고 에러가 발생하지 않으면 0을 반환합니다.

예시)

ECHO %A% | FIND "문구" > NUL

IF ERRORLEVEL 1 ECHO 문구가 포함되어있지 않습니다.

IF NOT ERRORLEVEL 1 ECHO 문구가 포함되어 있습니다.

 

라. IF EXIST

파일 존재 유무를 판단하는데 사용합니다.

예시)

IF EXIST C:\학식블로그.bat ECHO 파일이 존재합니다.

IF NOT EXIST C:\학식블로그.bat ECHO 파일이 존재하지 않습니다.

 

 

2. 배치파일 비교연산자

문자열 비교, 숫자 크기 비교 등에 사용합니다.

연산자 기호 내용
EQU == 같음
NEQ != 같지 않음
LSS < 보다 작은
LEQ <= 작거나 같음
GTR > 보다 큰
GEQ >= 크거나 같음

 

예시)

IF %A% EQU 10 ECHO A는 10입니다.

IF %A% NEQ 20 ECHO A는 20이 아닙니다.

IF %A% LSS 20 ECHO A는 20보다 작습니다.

IF %A% LEQ 10 ECHO A는 10보다 작거나 같습니다.

IF %A% GTR 5 ECHO A는 5보다 큽니다.

IF %A% GEQ 10 ECHO A는 10보다 크거나 같습니다.

 

 

3. 배치파일 반복문

반복문이라고 하지만 우리가 기본적으로 알고 있는 FOR문과 많이 다릅니다.

 

가. FOR

예시) FOR /F %%A IN (sample.txt) DO ECHO %%A

 

나. TOKEN

위 결과값과 같이 FOR 문은 띄어쓰기를 기준으로 출력되는 결과물이 다릅니다. 하여 TOKENS을 사용, 범위를 지정하여 내용물이 모두 출력될 수 있도록 해야 합니다.

예시) 

FOR /F "TOKENS=1" %%A  IN (sample.txt) DO ECHO %%A

FOR /F "TOKENS=1-2" %%A  IN (sample.txt) DO ECHO %%A %%B

FOR /F "TOKENS=1-3" %%A  IN (sample.txt) DO ECHO %%A %%B %%C

 

앞 %%A는 문자의 시작점을 의미합니다. 만약 앞에서 문자의 시작점이 %%B라고 선언한다면 뒤에는 %%B %%C %%D 라고 적어야 합니다.

 

다. DELIMS 

DELIMS 옵션으로 선언한 문자를 기준으로 앞과 뒤를 나눌 수 있습니다.

예시)

FOR /F "TOKENS=1 DELIMS=줄" %%A  IN (sample.txt) DO ECHO %%A

FOR /F "TOKENS=1-2 DELIMS=줄" %%A  IN (sample.txt) DO ECHO %%A %%B

 

 

4. 배치파일 실행경로 변경

관리자 권한으로 배치파일을 실행시켰을 경우, 실행 경로가 System32로 변경 되어져 버리는 문제가 발생합니다. 하여 아래와 같은 방법으로 배치파일의 실행위치를 변경시켜줘야할 필요가 있습니다.

 

가. CD

배치 시작부분에 아래와 같은 문구를 넣어 실행 위치를 System32에서 배치 파일이 존재하는 위치로 이동시킵니다.

예시) CD “%~DP0”

 

나. PUSHD

CD 명령어는 디렉터리 변경만 가능하고 드라이브가 다르면 변경되지 않습니다. 하여 아래의 명령어를 사용하여 드라이브 경로까지 바꿔줍니다.

예시) PUSHD “%~DP0”