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

Windows10下使用GPSBabel批量合并同名TXT并转GPX问题

问题根源

你现有的脚本会覆盖文件的核心原因是:每次循环调用GPSBabel时都直接写入同一个目标GPX文件,后执行的转换操作会直接覆盖之前已经生成的文件内容,最终只会保留最后一个TXT文件的转换结果。另外你现有循环里匹配的文件名是metadata.txt,和你实际需要处理的gpsdata.txt不符,这也是异常点之一。


方案1:一次性传入所有输入文件(推荐)

GPSBabel本身支持同时传入多个输入文件,会自动合并所有文件的轨迹数据后输出,只需一次调用即可完成转换+合并,效率更高,适合文件数量不算极多的场景。
BAT脚本如下:

@echo off
setlocal enabledelayedexpansion
:: 初始化输入文件参数变量
set "input_params="
:: 递归遍历所有gpsdata.txt,拼接输入参数
FOR /R C:\FOLDER1 %%i IN (gpsdata.txt) DO (
    set "input_params=!input_params! -f "%%i""
)
:: 一次性调用GPSBabel合并转换
X:\GPSBabel\gpsbabel -t -i xcsv,style=C:\mystyle.style !input_params! -o gpx -F C:\FOLDER2\gpsdata.gpx
endlocal

方案2:循环追加合并(兼容大量文件场景)

如果需要处理的TXT文件数量极多,拼接的参数长度超过Windows命令行参数限制,可以用循环逐次合并新文件到现有GPX中:

@echo off
setlocal enabledelayedexpansion
set "output_path=C:\FOLDER2\gpsdata.gpx"
:: 先清理旧的输出文件
if exist "!output_path!" del /f /q "!output_path!"
set "is_first=1"

FOR /R C:\FOLDER1 %%i IN (gpsdata.txt) DO (
    if "!is_first!"=="1" (
        :: 第一个文件直接生成初始GPX
        X:\GPSBabel\gpsbabel -t -i xcsv,style=C:\mystyle.style -f "%%i" -o gpx -F "!output_path!"
        set "is_first=0"
    ) else (
        :: 后续文件和现有GPX合并后覆盖输出
        X:\GPSBabel\gpsbabel -t -i xcsv,style=C:\mystyle.style -f "%%i" -i gpx -f "!output_path!" -o gpx -F "!output_path!"
    )
)
endlocal

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 23:57:05