我最近升级了我的宽带连接,所以新的连接有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.
)发布于 2021-02-20 06:17:06
我刚刚测试了这个批处理文件,它在我的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
::------------------------------------------------------------------------------------发布于 2021-02-19 14:21:23
我能够在默认网关而不是给定的代码中复制这个问题。在进行更改之前,该命令运行良好,并返回了我自己用来承载服务器的公共IPv4地址。
我做了以下工作:
works
E 215设置为DHCP切换这两个设置会导致返回IPv6或返回IPv4。当您切换时,您可能需要重新打开cmd,但由于您使用的是.bat,您可能只需重新运行它。
请记住,我使用的是频谱,您的默认网关设置可能会被不同的标记。如果您希望在以后的项目中使用IPv6,您可以随时重新切换它。
https://stackoverflow.com/questions/66276775
复制相似问题