如何将公共 IP 地址放入 Windows 批处理文件 (
*.bat
, *.cmd
) 变量中?
下面是一个类似的 PowerShell 命令,显示公共 IP 地址:
$ip = Invoke-RestMethod -Uri 'https://api.ipify.org?format=json'
"My public IP address is: $($ip.ip)"
如果您使用网络浏览器访问此 URL
https://api.ipify.org
,您的公共 IP 将以纯文本形式显示。 我想将此地址放入 Windows 批处理变量(而不是 PowerShell 变量)中。
无法真正访问那个
api.ipify.org
网站,但我猜这个任务本质上是访问一个响应json的URL,并从中获取一个字段。这是在批处理脚本中使用 curl
和常见字符串拆分和匹配技术的示例。您可能需要调整 tokens
以匹配响应顺序。我使用本地 REST 服务之一进行了测试,效果很好。
@echo off
FOR /F "tokens=2 delims=:{}" %%A IN ('curl -s "https://api.ipify.org?format=json" ^| findstr "ip"') DO SET IP=%%A
SET IP=%IP:"=%
echo %IP%
pause
话虽这么说,这纯粹是痛苦,而且该方法肯定不稳健。从批处理中调用 powershell 是一种选择吗?就像这个问题中的接受的答案。