배치 프로그래밍 (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 시 요청 시간이 만료되었다고 로그가 기록 되도록 합니다.