需要帮助使用 curl 批量处理两次变量

需要帮助使用 curl 批量处理两次变量
@echo off 
for /F %%I in ('curl https://ipinfo.io/ip') do set IP1=%%I 
for /F %%A in ('curl http://api.ipstack.com/%IP1%?access_key=mykey&format=1') do set IP=%%A 
echo %IP% pause

我不知道如何让第二个 curl 使用我给它的变量,我不明白我做错了什么

当我做

curl http://api.ipstack.com/%IP1%?access_key=mykey&format=1

有用

答案1

等号和 & 符号在这里会给您带来一些问题。请尝试将 URL 括在引号中:

for /F %%A in ('curl "http://api.ipstack.com/%IP1%?access_key=mykey&format=1"') do set IP=%%A

看看是否能得到更好的结果。您可能还想使用来curl -s抑制 CLI 可以返回的一些标头。

答案2

通过使用 Delims=

for /F "delims=" %%I in ('curl -s https://ipinfo.io/ip') do set "IP1=%%I"
Echo %Ip1%

输出:

120.16.49.75

从命令行,我期望以下内容能够使用正确的密钥

C:\WINDOWS\system32>for /F "USEBACKQ Tokens=* delims=" %A in (`"curl -s http://api.ipstack.com/%IP1%?access_key=mykey^&f                                                ormat=1"`) do set "IP=%~A"

C:\WINDOWS\system32>set "IP={"

C:\WINDOWS\system32>set "IP=  "success": false,"

C:\WINDOWS\system32>set "IP=  "error": {"

C:\WINDOWS\system32>set "IP=    "code": 101,"

C:\WINDOWS\system32>set "IP=    "type": "invalid_access_key","

C:\WINDOWS\system32>set "IP=    "info": "You have not supplied a valid API Access Key. [Technical Support: support@apila                                                yer.com]""

C:\WINDOWS\system32>set "IP=  }"

C:\WINDOWS\system32>set "IP=}"

C:\WINDOWS\system32>

顺便说一句,}返回的你是返回给变量的错误消息的最后一部分。

相关内容