Could anybody help to figure out what the problem is in the following batch code?
I want to check if the device with ip 192.168.0.1 is ready to connect.
I power off the device and power on it after executed the batch.
It seems the %errorlevel% is not working if first check is not 0
<code>@echo off
set "host=192.168.0.1"
for /l %%i in (1,1,255) do (
ping -n 1 "%host%" | findstr /r /c:"[0-9] *ms"
if %errorlevel% == 0 (
echo ping %host% ok.
goto :endLoop
) else (
echo ping %host% fail count %%i
REM "ping -n 6 -w 1000 " sleep 5 seconds
ping 127.0.0.1 -n 6 -w 1000 > nul
)
)
:endLoop
echo Done
</code>
<code>@echo off
set "host=192.168.0.1"
for /l %%i in (1,1,255) do (
ping -n 1 "%host%" | findstr /r /c:"[0-9] *ms"
if %errorlevel% == 0 (
echo ping %host% ok.
goto :endLoop
) else (
echo ping %host% fail count %%i
REM "ping -n 6 -w 1000 " sleep 5 seconds
ping 127.0.0.1 -n 6 -w 1000 > nul
)
)
:endLoop
echo Done
</code>
@echo off
set "host=192.168.0.1"
for /l %%i in (1,1,255) do (
ping -n 1 "%host%" | findstr /r /c:"[0-9] *ms"
if %errorlevel% == 0 (
echo ping %host% ok.
goto :endLoop
) else (
echo ping %host% fail count %%i
REM "ping -n 6 -w 1000 " sleep 5 seconds
ping 127.0.0.1 -n 6 -w 1000 > nul
)
)
:endLoop
echo Done
I got the following log, it can’t stop when ping response successfully.
<code>D:documentcodewindowsbat>check_ip.bat
ping 192.168.0.1 fail count 1
ping 192.168.0.1 fail count 2
ping 192.168.0.1 fail count 3
...
ping 192.168.0.1 fail count 21
ping 192.168.0.1 fail count 22
ping 192.168.0.1 fail count 23
Reply from 192.168.0.1: bytes=32 time=1ms TTL=64
Minimum = 1ms, Maximum = 1ms, Average = 1ms
ping 192.168.0.1 fail count 24
Reply from 192.168.0.1: bytes=32 time=2ms TTL=64
Minimum = 2ms, Maximum = 2ms, Average = 2ms
ping 192.168.0.1 fail count 25
Reply from 192.168.0.1: bytes=32 time=1ms TTL=64
Minimum = 1ms, Maximum = 1ms, Average = 1ms
ping 192.168.0.1 fail count 26
Reply from 192.168.0.1: bytes=32 time=1ms TTL=64
Minimum = 1ms, Maximum = 1ms, Average = 1ms
ping 192.168.0.1 fail count 27
^CTerminate batch job (Y/N)? Y
</code>
<code>D:documentcodewindowsbat>check_ip.bat
ping 192.168.0.1 fail count 1
ping 192.168.0.1 fail count 2
ping 192.168.0.1 fail count 3
...
ping 192.168.0.1 fail count 21
ping 192.168.0.1 fail count 22
ping 192.168.0.1 fail count 23
Reply from 192.168.0.1: bytes=32 time=1ms TTL=64
Minimum = 1ms, Maximum = 1ms, Average = 1ms
ping 192.168.0.1 fail count 24
Reply from 192.168.0.1: bytes=32 time=2ms TTL=64
Minimum = 2ms, Maximum = 2ms, Average = 2ms
ping 192.168.0.1 fail count 25
Reply from 192.168.0.1: bytes=32 time=1ms TTL=64
Minimum = 1ms, Maximum = 1ms, Average = 1ms
ping 192.168.0.1 fail count 26
Reply from 192.168.0.1: bytes=32 time=1ms TTL=64
Minimum = 1ms, Maximum = 1ms, Average = 1ms
ping 192.168.0.1 fail count 27
^CTerminate batch job (Y/N)? Y
</code>
D:documentcodewindowsbat>check_ip.bat
ping 192.168.0.1 fail count 1
ping 192.168.0.1 fail count 2
ping 192.168.0.1 fail count 3
...
ping 192.168.0.1 fail count 21
ping 192.168.0.1 fail count 22
ping 192.168.0.1 fail count 23
Reply from 192.168.0.1: bytes=32 time=1ms TTL=64
Minimum = 1ms, Maximum = 1ms, Average = 1ms
ping 192.168.0.1 fail count 24
Reply from 192.168.0.1: bytes=32 time=2ms TTL=64
Minimum = 2ms, Maximum = 2ms, Average = 2ms
ping 192.168.0.1 fail count 25
Reply from 192.168.0.1: bytes=32 time=1ms TTL=64
Minimum = 1ms, Maximum = 1ms, Average = 1ms
ping 192.168.0.1 fail count 26
Reply from 192.168.0.1: bytes=32 time=1ms TTL=64
Minimum = 1ms, Maximum = 1ms, Average = 1ms
ping 192.168.0.1 fail count 27
^CTerminate batch job (Y/N)? Y
I tried the batch on windows 10 machine.
I expect the code can stop after ping response successfully.