배치 프로그래밍 (Batch Pragramming)/배치 파일 만들어 쓰기

[.bat] 배치파일로 핑 테스트 로그 생성(핑테스트 로그 생성하기)

계발과개발의갭알자 2021. 1. 12. 10:42
@echo off


set/p host=host Address: 

set logfile=%date%_log_%host%.log



echo Target Host = %host% >%logfile%
echo 날짜 : %date%>>%logfile%
echo 시작 : %time:~0,2%:%time:~3,2%:%time:~6,2%>>%logfile%
for /f "tokens=*" %%A in ('ping %host% -n 1 ') do (echo %%A>>%logfile% && GOTO Ping)

:Ping

 for /f "tokens=* skip=2" %%A in ('ping %host% -n 1 ') do (
    
    if "%%A" == "요청 시간이 만료되었습니다." GOTO Loging

     echo %date% %time:~0,2%:%time:~3,2%:%time:~6,2% %%A

     timeout 1 >NUL 

     GOTO Ping)

:Loging
echo %date% %time:~0,2%:%time:~3,2%:%time:~6,2% 요청 시간이 만료되었습니다.>>%logfile% && GOTO Ping

저는 업무 중에 해당 기능이 잠깐 필요할 때가 있어서 간단하게 만들었던 건데 변형하면 좋을 것 같아 공유합니다.

코드 설명

1. set 명령어로 host 변수를 쓰는데 /p 옵션을 사용해 host Address: 를 cmd 창에 출력하여 보여주고 입력을 받을 것입니다. host Address: 가 cmd 창에 떠 있고 여기에 ip 주소를 입력하면 host 변수에 삽입 됩니다. (host 변수에 set)

2. logfile을 생성할 때, %date%_log_%host%.log 라는 이름으로 생성합시다.

3. echo에 적힌 코드대로 logfile에 기록합니다.

   ">%logfile%"라고 되어있는 부분이 %host%를 logfile에 기록하겠다는 것입니다.

4. 마찬가지로 date를 logfile에 기록합니다.

5. 시간을 기록합니다. time 뒤에 :~0,2 (시) :~3,2 (분) :~6,2 (시) 를 logfile에 기록합니다. 이렇게 설정하면

    17시 30분 14초가 17:30:14로 기록이 됩니다.

6. for loop 부분이 ping test에 관여하는 부분입니다. 토큰을 생성해서 처음에 입력한 host address로 테스트하는 거고

   logfile에 기록하고 GOTO 명령어로 :Ping으로 정리한 영역 (함수 내용)을 호출합니다.

7. :Ping과 :Loging은 GOTO 명령어로 호출되는 영역입니다.

    timeout 시 요청 시간이 만료되었다고 로그가 기록 되도록 합니다.