Para registro, aqui está o script que eu acabei fazendo depois de mexer com a solução do tumchaaditya.
Ainda não foi acionado em estado selvagem, mas parece funcionar quando testado. Eu irei corrigir este post assim que o fizer.
Em teoria, o consumo de largura de banda dos pings contínuos será de cerca de 1,5 GB / ano, portanto, um teste periódico pode ser preferível. No entanto, meu ISP afirma contar apenas bytes reais de carga útil e espero que a atividade contínua sirva como keepalive.
@echo off
set INTERFACE="Local Area Connection"
set TIMEOUT=3600
set IP=8.8.8.8
set LOG="watchdog.log"
echo %DATE% %TIME%: Watchdog started >> %LOG%
:loop
rem First check the interface for an hour by pinging the Google DNS
rem and resetting the networking interface if it should fail.
ping -n %TIMEOUT% -w 1000 -l 0 %IP%
if %errorlevel% NEQ 1 goto :loop
echo %DATE% %TIME%: Connection failed. Restarting interface.. >> %LOG%
netsh interface set interface %INTERFACE% disable
netsh interface set interface %INTERFACE% enable
rem Give it another shot but restart the whole computer if it the communication should still fail
ping -n %TIMEOUT% -w 1000 -l 0 %IP%
if %errorlevel% NEQ 1 goto :loop
echo %DATE% %TIME%: Still no connection. Restarting computer.. >> %LOG%
shutdown /r /c "Internet wathchdog"
echo %DATE% %TIME%: Waiting for system to shut down >> %LOG%
choice /T %TIMEOUT% /D Y /N > NUL
echo %DATE% %TIME%: Gave up on the shut down attempt. Trying again.. >> %LOG%
goto :loop
Observe que reiniciar a interface de rede requer privilégios administrativos (curiosamente, a reinicialização da máquina não.)
Tenha também em atenção que o estado de saída de ping aparentemente ainda é 0 para qualquer sistema não responsivo na mesma sub-rede.
Eu estava com preguiça de investigar como configurar um daemon apropriado para que eu confessasse a execução do script criando um link para ele no início automático, configurando a conta para fazer logon automaticamente, marcando o link para ser executado como administrador e desabilitar o UAC.