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

Batch脚本中Curl批量请求URL并实现结果换行保存的问题

解决Batch脚本中Curl结果换行无效的问题

你的脚本里有几个关键问题导致换行没生效,我来一步步帮你修正:

首先,先拆解原脚本的错误点:

  1. 语法错误:set setlocal EnableDelayedExpansion多了一个set,正确写法是setlocal EnableDelayedExpansion,这直接导致延迟扩展没启用,换行符变量无法正常解析。
  2. 循环逻辑错误:for %%x in (set) do完全无效,这个循环只会把字符串set当成唯一的循环项,重复执行里面的curl命令,根本没起到遍历URL的作用。
  3. 换行符使用错误:你把%LF%拼在curl命令后面,这会被当成curl的参数,而不是在输出结果后添加换行;再加上延迟扩展没启用,%LF%会被解析为空,自然没效果。
  4. 输出重定向位置错误:原脚本的重定向只作用于for循环的输出,但curl的内容是直接打印到控制台,没被正确捕获写入文件。

修正后的完整脚本

@echo off
setlocal EnableDelayedExpansion

:: 正确定义换行符,注意下面必须保留一个空行!
(set LF=^
%= 这里的空行是关键,不能删除 =%
)

:: 用循环遍历所有URL,写法更简洁易维护
for %%u in (
    "https://nominatim.openstreetmap.org/reverse?format=jsonv2&lat=-19.587492&lon=125.952764"
    "https://nominatim.openstreetmap.org/reverse?format=jsonv2&lat=-19.587493&lon=125.952765"
    "https://nominatim.openstreetmap.org/reverse?format=jsonv2&lat=-19.587494&lon=125.952766"
    "https://nominatim.openstreetmap.org/reverse?format=jsonv2&lat=-19.587495&lon=125.952767"
    "https://nominatim.openstreetmap.org/reverse?format=jsonv2&lat=-19.587496&lon=125.952768"
) do (
    :: -s 参数关闭curl的进度条,让输出更干净
    curl -s "%%~u" >> output.txt
    :: 写入换行符到文件,echo(!LF!避免空行时出现默认提示
    echo(!LF!>> output.txt
)

endlocal
echo 数据已成功保存到output.txt

额外说明

  • 如果需要覆盖文件而不是追加内容,把>>替换成>即可。
  • 不想用LF变量的话,也可以直接在每个curl后执行echo.>> output.txt,但echo.偶尔会受环境变量影响出问题,用LF的方式更稳定。
  • 启用延迟扩展后,要用!LF!而不是%LF%来引用换行符变量,这样在循环里能正确解析。

内容的提问来源于stack exchange,提问作者d'natsu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:06:18