如何从此IP列表中提取最终行?


1

我试图获取网络的外部IP地址,看它是否与其他PC在同一网络上,但我的脚本无法正常工作。我的主要问题是: 无论我做什么,我似乎无法从外部IP地址获取 nslookup myip.opendns.com resolver1.opendns.com 这是我有的:

nslookup myip.opendns.com resolver1.opendns.com>IP
set nu1m=0
Setlocal EnableDelayedExpansion
for /F "tokens=*" %%A in  (IP) do (set /a nu1m+=1 & if !num!==6 set ip=%%A)
echo %ip% >Out.txt
EndLocal

我试过更换 %ip%!ip! 但无论我做什么,ip变量都是空的。知道我做错了什么吗?


尝试省略而不使用任何条件 IFSET /A 逻辑,只是尝试 for /f "tokens=*" %%A in (IP) do set ip=%%A 然后检查 %ip% 看看它是否是预期的结果。既然你正在使用 set 命令,它将设置nslookup命令中的最后一个令牌,该命令应该是其输出中的最后一个IP,这是我认为你需要的,所以试一试,因为它可能很简单,而不是试图计数然后只有设置最后的输出 6 如果我理解正确的逻辑但实际上不需要它。
Pimp Juice IT

要删除多余的冒号/空格,请尝试 这个版本
LotPings

@PimpJuiceIT我是个傻瓜,非常感谢你!
Mark Deven

并且感谢@LotPings,您是否会介意将其作为答案进行修改以便我接受它?
Mark Deven

很高兴能帮助,无论我能做什么样的简单事情。有时忽略简单的事情很容易做到 - 我自己多次做过复杂的解决方案,因为我忘了先尝试简单的东西......干杯!
Pimp Juice IT

Answers:


1

而不是写作 nslookup 输出到一个文件,你可以用a直接解析它 for /f 如图所示 这个版本 我在这里重复一遍以便于查找:

@Echo off
for /f "tokens=2 delims=: " %%A in (
  'nslookup myip.opendns.com. resolver1.opendns.com 2^>NUL^|find "Address:"'
) Do set ExtIP=%%A
Echo External IP is : %ExtIP%
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.