Q:

Simple Pinger batch-script with "Working" and "Not Working" results runs infinitely without internet

I made a simple batch script to ping 8.8.8.8 a few times before returning either a positive or a negative message box. When the internet is working, it goes fine. But when it isn't, the script pings infinitely without generating a message box. Can anyone point out where I'm going wrong?
Also, if the script looks extremely rudimentary, it's because it probably is. I'm a newb at 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 GOOD
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 is working at the moment. You can close out of the console window now, or let it run a little longer to be 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 is not working at the moment." ,5 ,":(", 0)) >> %tmp%\tmp.vbs
cscript /nologo %tmp%\tmp.vbs
goto PING

EDIT:
Ended up completely reworking the script based on further research. Works as intended now.
Here it is for anyone interested:
@echo off

TITLE = Pinger

:INITIAL
echo Please wait while I check your 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 GOOD

: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 The internet is working! :)
echo set WshShell = WScript.CreateObject("WScript.Shell") > %tmp%\tmp.vbs
echo WScript.Quit (WshShell.Popup( "The internet is working. You can close out of the green window now, or hit OK to 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 The internet is not working :(
echo set WshShell = WScript.CreateObject("WScript.Shell") > %tmp%\tmp.vbs
echo WScript.Quit (WshShell.Popup( "The internet is not working at the moment. You can close out of the red window now, or hit OK to have me check again." ,20 ,":(", 0)) >> %tmp%\tmp.vbs
cscript /nologo %tmp%\tmp.vbs
echo Alright, I'll check again.
goto BADCHECKER

A:

Your :BAD tag goes back to the PING tag after you've notified the user that the internet is not working. Just remove that last goto PING statement.
Here's a different version of your script that's uses a 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 The internet is working at the moment. 
Echo You can close out of the console window now, or let it run a little longer to be absolutely sure.
set /p response=Stop monitoring? (Y/N)
if /i "%response%"=="y" (exit) else (goto :eof)

:failure
Echo The internet is not working at the moment.
set /p response=Stop monitoring? (Y/N)
if /i "%response%"=="y" (exit) else (goto :eof)

