Check if host is online - Batch program

Discussion forum for all Windows batch related topics.

Moderator: DosItHelp

Post Reply
Message
Author
Rafhack
Posts: 19
Joined: 23 Feb 2014 15:02

Check if host is online - Batch program

#1 Post by Rafhack » 20 Jul 2014 03:23

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

Post Reply