Simple Pinger batch-script with "Working" and "Not Working" results runs infinitely without internet -
i made simple batch script ping 8.8.8.8 few times before returning either positive or negative message box. when internet working, goes fine. when isn't, script pings infinitely without generating message box. can point out i'm going wrong? also, if script looks extremely rudimentary, it's because is. i'm newb @ this.
@echo off :ping ping 8.8.8.8 if errorlevel 0 goto goodchecker if errorlevel 1 goto badchecker :goodchecker ping 8.8.8.8 if errorlevel 0 (ping 8.8.8.8) if errorlevel 1 goto badchecker if errorlevel 0 (ping 8.8.8.8) if errorlevel 1 goto badchecker if errorlevel 0 (ping 8.8.8.8) if errorlevel 1 goto badchecker if errorlevel 0 goto if errorlevel 1 goto badchecker :badchecker ping 8.8.8.8 if errorlevel 1 (ping 8.8.8.8) if errorlevel 0 goto goodchecker if errorlevel 1 (ping 8.8.8.8) if errorlevel 0 goto goodchecker if errorlevel 1 goto bad if errorlevel 0 goto goodchecker :good echo set wshshell = wscript.createobject("wscript.shell") > %tmp%\tmp.vbs echo wscript.quit (wshshell.popup( "the internet working @ moment. can close out of console window now, or let run little longer absolutely sure." ,10 ,":)", 0)) >> %tmp%\tmp.vbs cscript /nologo %tmp%\tmp.vbs goto ping :bad echo set wshshell = wscript.createobject("wscript.shell") > %tmp%\tmp.vbs echo wscript.quit (wshshell.popup( "the internet not working @ moment." ,5 ,":(", 0)) >> %tmp%\tmp.vbs cscript /nologo %tmp%\tmp.vbs goto ping
edit:
ended reworking script based on further research. works intended now. here interested:
@echo off title = pinger :initial echo please wait while check connection. ping 8.8.8.8 | findstr /r /c:"[0-9] *ms" > nul if %errorlevel% == 0 (goto goodchecker) else (goto badchecker) :goodchecker ping 8.8.8.8 | findstr /r /c:"[0-9] *ms" > nul if %errorlevel% == 0 (ping 8.8.8.8 | findstr /r /c:"[0-9] *ms" > nul) else goto badchecker echo still checking. if %errorlevel% == 0 (ping 8.8.8.8 | findstr /r /c:"[0-9] *ms" > nul) else goto badchecker if %errorlevel% == 0 (ping 8.8.8.8 | findstr /r /c:"[0-9] *ms" > nul) else goto badchecker if %errorlevel% == 0 goto :badchecker ping 8.8.8.8 | findstr /r /c:"[0-9] *ms" > nul if %errorlevel% == 1 (ping 8.8.8.8 | findstr /r /c:"[0-9] *ms" > nul) else goto goodchecker echo still checking. if %errorlevel% == 1 (ping 8.8.8.8 | findstr /r /c:"[0-9] *ms" > nul) else goto goodchecker if %errorlevel% == 1 (ping 8.8.8.8 | findstr /r /c:"[0-9] *ms" > nul) else goto goodchecker if %errorlevel% == 1 goto bad :good color 2f echo internet working! :) echo set wshshell = wscript.createobject("wscript.shell") > %tmp%\tmp.vbs echo wscript.quit (wshshell.popup( "the internet working. can close out of green window now, or hit ok have me check again." ,30 ,":)", 0)) >> %tmp%\tmp.vbs cscript /nologo %tmp%\tmp.vbs echo i'll check again. goto goodchecker :bad color 4f echo internet not working :( echo set wshshell = wscript.createobject("wscript.shell") > %tmp%\tmp.vbs echo wscript.quit (wshshell.popup( "the internet not working @ moment. can close out of red window now, or hit ok have me check again." ,20 ,":(", 0)) >> %tmp%\tmp.vbs cscript /nologo %tmp%\tmp.vbs echo alright, i'll check again. goto badchecker
your :bad tag goes ping tag after you've notified user internet not working. remove last goto ping statement.
here's different version of script that's uses cleaner approach:
@echo off set pingip=8.8.8.8 :doping cls echo pinging %pingip% ping -n 3 -w 100 %pingip% > nul set result=%errorlevel% if %result%==1 (call :failure) else (call :success) goto :doping :success echo internet working @ moment. echo can close out of console window now, or let run little longer absolutely sure. set /p response=stop monitoring? (y/n) if /i "%response%"=="y" (exit) else (goto :eof) :failure echo internet not working @ moment. set /p response=stop monitoring? (y/n) if /i "%response%"=="y" (exit) else (goto :eof)
Comments
Post a Comment