Очистить все и только постоянные (статические) маршруты в Windows
Есть ли простой способ сделать это через команду / пакет оболочки? VBScript также будет в порядке.
4 ответа
Чтобы очистить все маршруты, используйте:
маршрут -f
Чтобы очистить только постоянные маршруты, вы можете использовать
reg delete HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\PersistentRoutes /va /fно это не удалит их из текущих активных маршрутов.
Чтобы удалить все постоянные маршруты IPv4, кроме маршрута по умолчанию:
for /f "skip=3 tokens=4,6" %e in ('netsh int ipv4 sh route store^=persistent ^| findstr -v 0.0.0.0/0') do route delete -4 -p %e %f
Чтобы удалить все постоянные маршруты IPv6, кроме маршрута по умолчанию:
for /f "skip=3 tokens=4,6" %e in ('netsh int ipv6 sh route store^=persistent ^| findstr -v ::/0') do route delete -6 -p %e %f
Вот cmd-скрипт, который извлекает статические маршруты из реестра и выдает route delete
Команды для каждого из них.
Этот метод удаляет их как из сохраненного списка постоянных маршрутов, так и из текущих активных маршрутов.
@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
)
Это можно сделать в качестве основного цикла for, позволяющего корректно очистить маршруты для существующих и будущих маршрутов.
(И не вмешиваясь в просмотр или редактирование каких-либо элементов реестра), используя простую печать маршрута, направленную в находку и зацикленную в удалении маршрута.
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 ) )