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

使用Batch脚本通过Curl请求多URL并保存结果至TXT的换行问题

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

我帮你梳理下原脚本里的几个问题,然后给出修正后的可行方案:

原脚本的核心错误点

  • 语法错误:set setlocal EnableDelayedExpansion 多了个多余的set,正确写法是setlocal EnableDelayedExpansion,这直接导致延迟扩展功能没生效,换行符变量无法正常解析。
  • 变量调用错误:开启延迟扩展后,换行符变量LF必须用!LF!调用,而不是%LF%,否则只会输出字符串本身,不会解析成换行。
  • 无效循环:for %%x in (set) do 这个循环完全没有实际作用,里面硬编码了5条curl命令,循环逻辑纯属多余。
  • 重定向逻辑问题:原脚本的重定向位置不对,无法实现每个curl结果之间的换行分隔。

修正后的脚本方案(简洁版)

如果只是想让5个curl结果依次写入output.txt,且每个结果间用换行分隔,直接按顺序执行即可:

@echo off
setlocal EnableDelayedExpansion

:: 定义换行符(注意:两行空行必须保留,不能有任何字符)
(set LF=^
%= 这里是空行,不要删 =%
)

:: 定义所有URL(去掉多余的引号,避免curl解析问题)
set "url1=https://nominatim.openstreetmap.org/reverse?format=jsonv2&lat=-19.587492&lon=125.952764"
set "url2=https://nominatim.openstreetmap.org/reverse?format=jsonv2&lat=-19.587493&lon=125.952765"
set "url3=https://nominatim.openstreetmap.org/reverse?format=jsonv2&lat=-19.587494&lon=125.952766"
set "url4=https://nominatim.openstreetmap.org/reverse?format=jsonv2&lat=-19.587495&lon=125.952767"
set "url5=https://nominatim.openstreetmap.org/reverse?format=jsonv2&lat=-19.587496&lon=125.952768"

:: 清空目标文件(如果需要追加内容,把>改成>>即可)
echo. > output.txt

:: 执行curl并写入换行分隔
curl !url1! >> output.txt
echo !LF! >> output.txt

curl !url2! >> output.txt
echo !LF! >> output.txt

curl !url3! >> output.txt
echo !LF! >> output.txt

curl !url4! >> output.txt
echo !LF! >> output.txt

curl !url5! >> output.txt

进阶版(用循环批量处理URL)

如果后续需要增加更多URL,用数组+循环的方式更易维护:

@echo off
setlocal EnableDelayedExpansion

:: 定义换行符
(set LF=^
%= 空行保留 =%
)

:: 用数组存储URL
set "urls[1]=https://nominatim.openstreetmap.org/reverse?format=jsonv2&lat=-19.587492&lon=125.952764"
set "urls[2]=https://nominatim.openstreetmap.org/reverse?format=jsonv2&lat=-19.587493&lon=125.952765"
set "urls[3]=https://nominatim.openstreetmap.org/reverse?format=jsonv2&lat=-19.587494&lon=125.952766"
set "urls[4]=https://nominatim.openstreetmap.org/reverse?format=jsonv2&lat=-19.587495&lon=125.952767"
set "urls[5]=https://nominatim.openstreetmap.org/reverse?format=jsonv2&lat=-19.587496&lon=125.952768"

echo. > output.txt

:: 循环遍历所有URL,最后一条不添加多余换行
for /L %%i in (1,1,5) do (
    curl !urls[%%i]! >> output.txt
    if not %%i equ 5 echo !LF! >> output.txt
)

关键注意事项

  1. 延迟扩展:开启EnableDelayedExpansion后,变量必须用!变量名!调用,才能在循环或复杂语句中正确解析。
  2. 换行符定义:(set LF=^后面必须紧跟一个空行,注释%=...=%只是占位,不能在那两行之间加任何字符,否则换行符会定义失败。
  3. 重定向选择:>会清空原有文件内容后写入,>>是追加内容到文件末尾,根据你的需求选择即可。

内容的提问来源于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:03:57