Code: Select all
@echo off
setlocal enabledelayedexpansion
set /p "exp=IP or Range: "
echo/------------------------------------->>%~n0.log
echo/[%date% %time% - %exp%]>>%~n0.log
echo/------------------------------------->>%~n0.log
for /f "tokens=1,2,3,4 delims=." %%a in ('echo/%exp%') do (
set "p1=%%a"
set "p2=%%b"
set "p3=%%c"
set "p4=%%d" )
for /l %%a in (4,-1,1) do (
for /f "tokens=2,1 delims=-" %%k in ('echo/!p%%a!') do (
if "%%l" NEQ "" (
set /a p%%av=%%l-%%k+1
set stVal%%a=%%k
set fnVal%%a=%%l
) else (
set /a p%%av=1
set stVal%%a=%%k
set fnVal%%a=%%k
)
)
)
set /a count=%p1v% * %p2v% * %p3v% * %p4v%
echo/%count% hosts
timeout 1 1>nul
for /l %%p in (!stVal1!,1,!fnVal1!) do (
for /l %%s in (!stVal2!,1,!fnVal2!) do (
for /l %%t in (!stVal3!,1,!fnVal3!) do (
for /l %%q in (!stVal4!,1,!fnVal4!) do (
echo|set /p=%%p.%%s.%%t.%%q -
call:verify %%p.%%s.%%t.%%q
)
)
)
)
echo/Complete
pause>nul
exit
:verify
set errno=
ping %1 -n 1 -w 1000 -l 16| find /i "TTL" >nul && set errno=0
if "%errno%" equ "0" (
call:show "ÿOnline" "0a"&echo/
echo/%1 - Online>>%~n0.log
) else (
call:show "ÿOffline" "0c"&echo/
echo/%1 - Offline>>%~n0.log
)
exit/b
:show
for /F "tokens=1,2 delims=#" %%a in ('"prompt #$H#$E# & echo on & for %%b in (1) do rem"') do (
set "DEL=%%a"
)
call :ColorText %~2 "%~1"
exit/b
:ColorText
<nul set /p ".=%DEL%" > "%~2"
findstr /v /a:%1 /R "^$" "%~2" nul
del "%~2" > nul 2>&1
exit/b
To check a range of addresses, type a expression like: 192-193.168-170.0-10.1-255 or 192.168.0.0-255