有没有一种通过 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 ) )