batch-file - 如何获取公共 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
::------------------------------------------------------------------------------------
推荐阅读
- html - 在表格中居中一个按钮
- html - 表格样式 - td:hover 规则是否可以覆盖 tr:hover?
- spring-boot - com.microsoft.sqlserver.jdbc.SQLServerException:列名“inventory_on_hand”无效
- sql-server - 根据 SSRS 报告参数更改数据字段值
- elasticsearch - 如何将 ElasticSearch 查询转换为 java
- reactjs - 在 React useEffect 钩子中设置钩子状态
- python - x轴中yyyy-mm形式的日期,用于线图pandas python
- c# - 如何通过我们的 C# Web 应用程序保持 AWS Auth0 身份验证中保存的电子邮件与 SQL Server 中的联系人表之间的完整性?
- unit-testing - 如何处理 Jmeter 自动化工具中的弹出窗口?
- angular - 如何使用引导程序将详细信息行紧邻 angular8 中的编辑单击行