我正在尝试在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)
有什么想法我做错了什么吗?
仅供参考,我尝试选择它的原因是我有一个程序,该程序将主机文件中的条目设置为指向我当前的IP,以便我在本地运行的站点可以使用特定的域。现有代码的问题在于我有两个IPv4地址 - 一个来自VPN,另一个来自我的本地路由器 - 并且该代码选择了错误的IP地址。
非常感谢!
您的 findstr 参数是错误的。您已指定使用正则表达式并使用文字。正则表达式将获胜,因此您正在搜索IP或地址。删除/r
。
此外,您的代币/delims是错误的 - 您的变量中有很多空间。这使得冒号和空格成为分隔符。
for /f "tokens=3 delims=: " %a in ('netsh interface IPv4 show addresses "local area connection 7" ^| findstr /C:"IP Address"') do (set newip=%a)
我是怎么发现的。我将您的命令解开回单个命令并运行每个命令。一旦我看到输出,它就很明显了。