Limpar todas e somente rotas persistentes (estáticas) no Windows

8

Existe uma maneira simples de fazer isso através de um comando / lote do shell? Um VBScript também ficaria bem.

user1686
fonte

Respostas:

9

Para limpar todas as rotas, use:

rota -f

Para limpar apenas rotas persistentes, você pode usar

reg delete HKLM \ SYSTEM \ CurrentControlSet \ Services \ Tcpip \ Parameters \ PersistentRoutes / va / f
mas isso não os removeria das rotas ativas no momento.

user1686
fonte
Eu tenho muitas rotas persistentes, mas não vejo nenhuma nessa regkey. Eles estão armazenados em outro lugar hoje em dia (Windows 10)?
NickG 28/03
@ NickG: Não tenho certeza. Você está falando de rotas IPv4 ou IPv6?
user1686
0

Aqui está um cmd-script que extrai as rotas estáticas do registro e emite route deletecomandos para cada uma delas.

Esse método os remove da lista armazenada de rotas persistentes e das rotas ativas no momento.

@echo off
set key=HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\PersistentRoutes
for /f "tokens=1,2,3,* delims=," %%i in ('reg query %key% ^| find "REG_SZ"') do (
   route delete %%i mask %%j %%k
)
Klaus Hartnegg
fonte
0

Isso pode ser feito como um loop for básico, permitindo que você limpe as rotas corretamente para as rotas existentes e futuras.

(E sem se envolver na revisão ou edição de nenhum item do registro) usando uma impressão de rota simples direcionada para uma localização e repetida para excluir uma rota.

FOR /F "TOKENS=1-5" %a IN ('ROUTE PRINT ^| FIND /I /V "On-Link" ^| FINDSTR /E /R /C:" *\.[0-9]*[0-9] *[0-9][0-9]*"') DO @(IF /I "%~e" EQU "" ( ROUTE DELETE %a MASK %b %c  ) )
Ben Personick
fonte