在 Windows 上如何通过 mac 地址设置路由?

在 Windows 上如何通过 mac 地址设置路由?

这是我们许多人在 Windows 上设置路线的方式:

路由添加 10.10.0.0 掩码 255.255.0.0 10.77.77.1 如果58-p

在命令行中58是接口索引 (IF),大多数情况下,其值对于特定网络接口卡是恒定的。因此,可以创建一个 CMD 批处理文件来自动删除和重新设置所需的所有路由。

但是,我有一个 USB 3.0 转双端口千兆以太网适配器 NIC,每次我连接到笔记本电脑的 USB 端口时,它的 IF 都会发生变化。我的做法是,打开一个命令shell,通过提供获取当前接口 ID路线打印,然后使用文本编辑器打开 CMD 批处理文件并将所有旧的 IF(例如:58) 值,保存并关闭,最后在 shell 上运行 CMD 批处理文件。

如果有一种方法可以仅通过了解 MAC 地址来设置路由,而不依赖于 IF - 那么问题就解决了:) 解决方案可能是一个简单的一行 CMD 命令(通过MAC设置路由),或者先通过 MAC 获取 IF,再通过 IF 设置路由(通过MAC地址接口设置路由)。

非常感谢您的帮助!

答案1

下一个代码片段展示了如何通过 MAC 获取 IF使用FOR /F环形反对的结果WMIC(Windows 管理规范命令)

@ECHO OFF
SETLOCAL EnableExtensions DisableDelayedExpansion

set "_maca=AA:AA:AA:AA:AA:AA"            change to match your circumstances
set "_geta=InterfaceIndex^, MACAddress"    to keep next lines in reasonable length
set "_ifin="                               to ensure that `_ifin` variable is empty

for /F "tokens=1,*" %%G in ('
    WMIC NIC where "MACAddress='%_maca%'" get %_geta% 2^>NUL ^| find ":"
                            ') do set "_ifin=%%~G"

if defined _ifin (
        rem route command block here:
    route add 10.10.0.0 mask 255.255.0.0 10.77.77.1 if %_ifin% -p
) else (
    echo %_maca%: No Instance^(s^) Available.
)

资源(必读):

相关内容