【发布时间】:2021-02-19 11:31:23
【问题描述】:
我最近升级了我的宽带连接,所以新的连接有 ipv6 和 ipv4。我以前的只有 ipv4。我想将 ipv4 放在批处理文件中的变量中,而不是 ipv6。我使用的当前命令提供了默认 ip,所以之前它曾经将 ipv4 存储在变量中,但现在它将 ipv6 存储在其中。我不知道如何获取 ipv4,因为我使用的 nslookup 只提供 ipv6。 这是我当前的批处理文件。
@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.
)
【问题讨论】:
-
您可能需要清除或禁用路由器中的 DNS 缓存,然后刷新。无论哪种方式,这些都不是您的命令或脚本的问题,而是您的硬件/软件配置设置的问题。
-
是不是因为我使用的是我的isp提供的dns服务器?让我检查一下 1.1.1.1
-
在控制台窗口
nslookup myip.opendns.com. resolver1.opendns.com中运行时输出什么?是否没有两行输出Addresses:包含 IPv6 地址,下面是查找的域的 IPv4 地址?看起来您过滤了错误的输出行。以Address:开头的行是网关的IP 地址。 -
命令
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'"怎么样?
标签: batch-file cmd command-line ip