You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Windows批处理中从wttr.in提取天气数据到变量?

解决wttr.in数据提取的编码与变量赋值问题

乱码问题根源

wttr.in返回UTF-8编码的内容,但Windows CMD默认使用GBK(OEM编码),直接重定向到文件再读取会出现编码不兼容,导致乱码。用for循环直接捕获输出并同步处理编码,是更高效的规避方式。

for命令报错的修复

CMD中%是变量引用的特殊字符,直接写%t会被CMD当成未定义变量解析,传给curl的内容为空,才会出现Could not resolve host: %t错误。需要把%转义为%%,确保curl能收到正确的格式参数。

单字段提取的修复方案

执行以下命令可正确捕获气温并赋值,同时解决编码问题:

chcp 65001 >nul  # 切换CMD编码为UTF-8,适配wttr.in的输出
for /f "delims=" %%x in ('curl -s wttr.in/berlin?format=%%t') do set temp=%%x
  • chcp 65001:切换CMD到UTF-8编码,避免乱码
  • -s:让curl静默输出,去掉冗余进度信息
  • %%t:转义后的格式参数,确保curl识别
  • "delims=":防止输出含空格时被截断

多字段批量提取的优化方案

如果要一次性提取气温(%t)、天气状况(%C)、风力(%w),可以用自定义分隔符(比如|)拆分输出到多个变量:

chcp 65001 >nul
for /f "tokens=1-3 delims=|" %%a in ('curl -s wttr.in/berlin?format=%%t^|%%C^|%%w') do (
    set temp=%%a
    set condition=%%b
    set wind=%%c
)
  • ^|:转义分隔符|,避免被CMD解析成管道命令
  • tokens=1-3 delims=|:按|拆分输出,分别赋值给%%a/%%b/%%c

验证变量结果

执行完后可通过以下命令查看赋值结果:

echo 气温:%temp%
echo 天气:%condition%
echo 风力:%wind%

内容的提问来源于stack exchange,提问作者Bricktop

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 06:10:31