如何获取公网ipv4而不是ipv6



我最近升级了我的宽带连接,所以新的一个有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.
)

我刚刚测试了这个批处理文件,它在我这边工作5/5 !

@echo off
Title Get Public IP by Powershell and Batch
@for /f "delims=" %%# in (
'PowerShell -C "Resolve-DnsName -Name "'myip.opendns.com'" -Server "'resolver1.opendns.com'" | select IPAddress" ^| findstr "."'
) do Set "MyPublicIP=%%#"
echo My Public IP Address  = %MyPublicIP%
pause

这是另一个调用子程序:GetPublic_IP <Target> <IP>

@echo off
Title Get Public IP by Powershell and Batch
Set "MyPublicIP=myip.opendns.com"
Set "Google=www.google.com"
Set "Yahoo=www.yahoo.com"
Set "Stack=www.stackoverflow.com"
Call :GetPublic_IP "%MyPublicIP%" MyPublicIP 
echo My Public IP Address       = %MyPublicIP%
Call :GetPublic_IP "%Google%" Google_IP 
echo Google IP Address          = %Google_IP%
Call :GetPublic_IP "%Yahoo%" Yahoo_IP 
echo Yahoo IP Address           = %Yahoo_IP%
Call :GetPublic_IP "%Stack%" Stack_IP
echo Stackoverflow IP Address   = %Stack_IP%
pause
EXIT
::------------------------------------------------------------------------------------
:GetPublic_IP <Target> <IP>
@for /f "delims=" %%# in (
'PowerShell -C "Resolve-DnsName -Name '"%~1"' -Server "'resolver1.opendns.com'" | select IPAddress" ^| findstr "."'
) do Set "%2=%%#
Exit /B
::------------------------------------------------------------------------------------

我能够在默认网关而不是给定的代码中复制这个问题。在我进行更改之前,该命令工作正常,并返回了我用于托管我自己的服务器的公共IPv4地址。

我做了以下操作:

  1. 192.168.1.1——比;或者你的默认网关是
  2. 使用"admin"登录和";password"——比;或者如果你已经改变了它们,不管它们是什么
  3. 导航到高级比;高级设置比;IPv6
  4. 更改设置DisabledDHCP

切换这两个设置的结果是返回IPv6或返回IPv4。当你切换时,你可能需要重新打开cmd,但由于你使用的是。bat,你可能只需要重新运行它。

请记住,我使用的是Spectrum,您的默认网关设置可能被标记为不同的。如果你想在以后的项目中使用它,你可以随时重新切换IPv6。

最新更新