我需要在 openvpn 场景中找到默认网关,其中路由输出如下所示:
IPv4 Route Table
===========================================================================
Active Routes:
Network Destination Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 10.49.73.1 10.49.73.24 10
0.0.0.0 128.0.0.0 10.8.0.1 10.8.0.2 30
所以我在 Google 上搜索了一下,找到了这个脚本这里:
@For /f "tokens=3" %%* in (
'route.exe print ^|findstr "\<0.0.0.0\>"'
) Do @Set "DefaultGateway=%%*"
echo %DefaultGateway%
这可行,但会匹配路线输出中的两行。
但我需要找到这一行:
0.0.0.0 0.0.0.0 10.49.73.1 10.49.73.24 10
因此我尝试像这样修改 findstr 参数:
findstr "\<0.0.0.0\>.\<0.0.0.0\>"
期望“。”将匹配列之间的制表符。但事实并非如此。它仍将 DefaultGateway 设置为 10.8.0.1
我找不到线索MS 文档也行。也许有人知道正确的表达方式?非常感谢。
答案1
尝试这个:
For /f "tokens=3" %%* in (
'route print ^|findstr "\<0.0.0.0.*0.0.0.0\>"'
) Do @Set "DefaultGateway=%%*"
echo %DefaultGateway%
您还可以查看findstr /?
更多信息。