清除 Windows 上的所有且仅持久(静态)路由

清除 Windows 上的所有且仅持久(静态)路由

有没有一种通过 shell 命令/批处理完成此操作的简单方法?VBScript 也可以。

答案1

要清除所有路线,请使用:

路线-f

要仅清除持久路由,您可以使用

reg 删除 HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\PersistentRoutes /va /f
但这不会将它们从当前活动的路线中删除。

答案2

删除除默认路由之外的所有 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

答案3

这是一个 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
)

为了防止删除默认路由,您可以输入以下命令:

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

答案4

这可以作为一个基本的 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  ) )

相关内容