如何使用Windows命令提示符获取公共IP地址?

7

有没有办法通过命令提示符完成此操作,而不使用任何第三方软件或依赖于PowerShell?

像在Linux / Mac上使用的 curl http://ipinfo.io/ip 这样的简单命令就很好了。

谢谢!

11个回答

22

使用 PowerShell 中的 Invoke-WebRequest 模块。例如:

Invoke-WebRequest ifconfig.me/ip

前往来源

编辑:我误读了问题并认为您需要使用Powershell,在cmd.exe中没有内置命令可以返回公共IP地址,但是您可以使用nslookup来解析它,就像这样:

nslookup myip.opendns.com. resolver1.opendns.com

OP的另一个选择:

telnet curlmyip.com 80

连接后,请输入GET

注意:telnet在Windows上默认未安装/启用。

查看来源


有没有在命令提示符上执行而不使用PowerShell的方法? - Tuco
当使用该命令时,一直收到“DNS请求超时”的错误信息。 :/ - Tuco
1
这是一个基本的nslookup命令。只要您可以解析到外部DNS地址,它就可以工作。您可能没有正确配置dns解析器。您可以尝试使用Google的DNS解析器(8.8.8.8和8.8.4.4),但您需要在本地机器上查看。 - Avalon
命令提示符中没有获取公共IP地址的命令。这只是对您所施加限制的一种变通方法,如果您愿意,它也可以被称为巧妙的“技巧”。最好使用PowerShell,因为它实际上有一个函数来完成您想要的操作。如果已经安装了telnet,您可以尝试使用它。默认情况下,Windows未安装/启用它。 - Avalon
这里的重点是OpenDNS显然通过允许您查询标签myip.opendns.com来提供此服务。可能应该明确说明答案;目前看起来像是“这是如何使用nslookup”。 - tripleee

14

最简单的跨平台解决方案(适用于Mac、Windows和Linux)

curl "http://myexternalip.com/raw"

& 您将获得公共IPv4。


1
如果你安装了 git bash -> C:\Program Files\Git\mingw32\bin\curl.exe 或者 xampp -> C:\xampp\apache\bin\curl.exe,那么curl也会被安装。 - Gray Programmerz

5

以下命令在Windows和Linux中都可以使用:

curl ifconfig.me

Curl是内置在Windows中的,当你升级到最新版本时,它不被称为第三方软件。

或者

curl ifconfig.co

在Linux中,几乎所有的发行版都已经有这个命令了。

非常感谢ArthurG提供的这些命令,它们完美地运行,并且可以在批处理脚本中以多种方式使用。


3
curl ip-adresim.app

它支持IPv4和IPv6。


2

尝试使用这个普通的dos批处理命令:

@echo off
nslookup myip.opendns.com resolver1.opendns.com | find "Address" >"%temp%\test1.txt"
more +1 "%temp%\test1.txt" >"%temp%\test2.txt"
set /p MyIP=<%temp%\test2.txt
del %temp%\test2.txt
set MyIP=%MyIP:~10%
echo %MyIP%

现在,%MyIP%可以被回显或用作变量进行其他批处理操作。

2
这个命令对我有效:

nslookup myip.opendns.com. resolver1.opendns.com

nslookup 能够正常工作,但有时会返回 IPv6 地址而不是 IPv4 地址,这可能会引起麻烦... - Guilherme Z. Santos

2

一行命令,无需使用curl或powershell,只需使用裸的CMD,输入IPv4地址即可。

FOR /f "skip=1 tokens=2 delims=:\ " %G IN ('nslookup myip.opendns.com resolver1.opendns.com 2^>^&1 ^|find "dress"') DO @echo %G

1

实际上,在Linux和Windows中,您可以使用完全相同的命令:

 curl http://ipinfo.io/ip

我将它作为批处理文件的一部分使用,如下所示:

FOR /F "tokens=* USEBACKQ" %%F IN (`curl http://ipinfo.io/ip`) DO (
SET currentip=%%F
)
ECHO %currentip%

0

Windows/Linux 版本:

nslookup myip.opendns.com resolver1.opendns.com

Unix版本:

dig +short myip.opendns.com @resolver1.opendns.com

“dig” 并没有什么特别的“Unix”,也有 “host”。在 Unix / Linux / Mac 上通常都会安装 nslookupdighost 这三个命令,但是在某些系统中只有一个或其中几个是标准安装(尽管在我的 Mac 上,这三个命令都在 /usr/bin 中;但这可能是 XCode 的一部分)。“nslookup” 曾经是 Windows 的一部分,但我猜现在不再是了。 - tripleee
无论如何,这基本上是重复了之前答案中的信息。 - tripleee

0
这对我来说完美无缺:
curl http://ip.jsontest.com/ > ip.json
for /f "tokens=2 delims=:" %%a in ('type ip.json') do (set publicip=%%a)
set publicip=%publicip:{=%
set publicip=%publicip:}=%
set publicip=%publicip:"=%
echo %publicip:~1%

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接