批处理文件将特定 IP 获取到变量中

Batch File get Specific IP into Variable

我正在尝试 select windows 批处理文件中的特定 IP 地址。这行代码有效,但获取错误的 IP 地址:

for /f "delims=: tokens=2" %%a in ('ipconfig ^| findstr /R /C:"IPv4 Address"') do (set newip=%%a)

如果我在命令行输入这个,它会得到一行包含我正在寻找的 IP 地址:

netsh interface IPv4 show addresses "Ethernet 2" | findstr /R /C:"IP Address"

但是,当我尝试将其嵌入到上面的行中以将 IP 地址放入变量时,它会抛出错误“'else' 未被识别为内部或外部命令、可运行程序或批处理文件。'

for /f "delims=: tokens=2" %%a in ('netsh interface IPv4 show addresses "Ethernet 2" ^| findstr /R /C:"IP Address"') do (set newip=%%a)

有没有想过我做错了什么?

仅供参考,我尝试 select 的原因是我有一个程序在我的主机文件中设置一个条目以指向我当前的 IP,以便我 运行本地可以使用特定域。现有代码的问题是我有两个 IPv4 地址 - 一个来自 VPN,另一个来自我的本地路由器 - 并且该代码 selecting 了错误的 IP 地址。

非常感谢!

你的findstr参数有误。您已指定使用正则表达式并使用文字。 RegEx 将获胜,因此您正在搜索 IPAddress。删除 /r.

您的 tokens/delims 也是错误的 - 您的变量中有很多 space。这使得冒号和 space 成为分隔符。

for /f "tokens=3 delims=: " %a in ('netsh interface IPv4 show addresses "local area connection 7" ^| findstr /C:"IP Address"') do (set newip=%a)

我是怎么发现这个的。我将您的命令解开为单独的命令和 运行 每个命令。一旦我可以看到输出,它就很明显了。