Batch file 如何获得公共ipv4而不是ipv6
我最近升级了我的宽带连接,因此新的连接同时具有ipv6和ipv4。我以前的一个只有ipv4。我想将ipv4放在批处理文件的变量中,而不是ipv6。我使用的当前命令提供了默认的ip,所以之前它用于在变量中存储ipv4,但现在它在变量中存储ipv6。我不知道如何获取ipv4,因为我使用的nslookup只提供ipv6。 这是我当前的批处理文件Batch file 如何获得公共ipv4而不是ipv6,batch-file,cmd,command-line,ip,Batch File,Cmd,Command Line,Ip,我最近升级了我的宽带连接,因此新的连接同时具有ipv6和ipv4。我以前的一个只有ipv4。我想将ipv4放在批处理文件的变量中,而不是ipv6。我使用的当前命令提供了默认的ip,所以之前它用于在变量中存储ipv4,但现在它在变量中存储ipv6。我不知道如何获取ipv4,因为我使用的nslookup只提供ipv6。 这是我当前的批处理文件 @echo off setlocal EnableExtensions Disabledelayedexpansion cd /d "%~dp0&q
@echo off
setlocal EnableExtensions Disabledelayedexpansion
cd /d "%~dp0"
for /f "tokens=1* delims=: " %%A in (
'nslookup myip.opendns.com. resolver1.opendns.com 2^>NUL^|find "Address:"'
) Do set ExtIP=%%B
<save.ip set /p SavIP=
if "%SavIP%" neq "%ExtIP%" (
echo %date% %time~0,5% : IP changed from %SavIP% to %ExtIP%.
>save.ip echo %ExtIP%
start http://%ExtIP% #this is where I put the url
) else (
echo ExtIP didn't change. Nothing to do.
)
@echo关闭
setlocal EnableExtensions Disabledelayedexpansion
cd/d“%~dp0”
对于/f“tokens=1*delims=:”%%A in(
'nslookup myip.opendns.com.resolver1.opendns.com 2^>NUL^|查找“地址:”
)是否设置ExtIP=%%B
save.ip回显%ExtIP%
启动http://%ExtIP%#这是我放置url的地方
)否则(
echo ExtIP没有改变,没什么可做的。
)
我能够在默认网关而不是给定代码中复制此问题。
在我进行更改之前,该命令运行良好,并返回了我用于托管自己服务器的公共IPv4地址
我做了以下工作:
请记住,我使用的是Spectrum,您的默认网关设置可能会有不同的标签。如果您希望在以后的项目中使用IPv6,您可以随时重新切换IPv6。我刚刚测试了这个批处理文件,它在我的5/5版本上工作
@echo关闭
标题通过Powershell和批处理获取公共IP
@对于/f“delims=“%%#in(
'PowerShell-C“Resolve DnsName-Name”'myip.opendns.com'-服务器“'resolver1.opendns.com'”;选择IPAddress“^ | findstr”\。'
)设置“MyPublicIP=%%#”
回显我的公共IP地址=%MyPublicIP%
暂停
下面是另一个调用子例程的函数:GetPublic\u IP
@echo关闭
标题通过Powershell和批处理获取公共IP
设置“MyPublicIP=myip.opendns.com”
设置“Google=www.Google.com”
设置“Yahoo=www.Yahoo.com”
设置“Stack=www.stackoverflow.com”
调用:GetPublic\u IP“%MyPublicIP%”MyPublicIP
回显我的公共IP地址=%MyPublicIP%
调用:GetPublic\u IP“%Google%”Google\u IP
回显Google IP地址=%Google\u IP%
呼叫:GetPublic_IP“%Yahoo%”Yahoo_IP
回声雅虎IP地址=%Yahoo_IP%
调用:GetPublic\u IP“%Stack%”堆栈\u IP
回声堆栈溢出IP地址=%Stack\u IP%
暂停
出口
::------------------------------------------------------------------------------------
:GetPublic\u IP
@对于/f“delims=“%%#in(
'PowerShell-C“Resolve DnsName-Name'”%~1“'-服务器“'resolver1.opendns.com'”选择IPAddress“^ findstr”\。'
)不设置“%2=%%”#
退出/B
::------------------------------------------------------------------------------------
您可能需要清除或禁用路由器中的DNS缓存,然后刷新。无论哪种方式,这些都不是您的命令或脚本的问题,而是您的硬件/软件配置设置的问题。是因为我使用的是isp提供的DNS服务器吗?让我用1.1.1.1在控制台窗口中运行时的输出进行检查 nslookup myip.opendns.com.resolver1.opendns.com
?是否有两行输出的地址:
包含IPv6地址,下面是查找的域的IPv4地址?看起来您在输出的错误行上进行了筛选。以地址:
开头的行具有网关的IP地址。这是什么e命令powershell-NoLogo-NoProfile-command“Resolve DnsName-Name'myip.opendns.com'-Server'resolver1.opendns.com'”
?命令powershell-NoLogo-NoProfile-command“Resolve DnsName-Name'myip.opendns.com'-Server'resolver1.opendns.com'”
如何?