Ping a host once every X seconds and save the result in a csv:
@echo off
SETLOCAL
if [%1]==[/?] goto :help
::Set the address to ping
set address=%1
if [%1]==[] goto :fatal
::Set the destination filename
set filename=%2
if [%2]==[] set filename=pingres.csv
::Set delay between pings (seconds)
set delay=%3
if [%3]==[] set delay=30
:: some info
echo.
echo Running %0 %address% %filename% %delay% - press "Q" for at least %delay%s to quit.
echo.
:: Prepare csv header
echo Time, Target, Lag > %filename%
:loop
::Ping
for /F "tokens=7 delims== " %%l in ('ping -n 1 %address%^|findstr /i "time="') do set lag=%%l
::echo Current ping for %address%: %ping%
<nul set /p =.
::Set Timestamp
set curTime= %date:~0,4%/%DATE:~5,2%/%DATE:~8,3%-%time:~0,2%:%time:~3,2%:%time:~6,2%
::Write in .csv
echo %curTime%, %address%, %lag% >> %filename%
::delay
timeout /T %delay% /nobreak >nul
::keypress
choice /c QWERTY /d Y /t 1 /n >nul
if %errorlevel%==1 ( exit /B 0)
goto :loop
:help
echo.
echo Usage: %0 target resultfile delay
echo if not specified, resultfile is "pingres.csv" and delay is 30s
:fatal
echo.
echo You need to provide at least the hostname/IP of the target
echo type %0 /? for help
exit /B 1
ENDLOCAL
No comments:
Post a Comment