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

请求编写Batch脚本合并CSV文件中匹配的重复记录

Windows批处理脚本合并CSV重复记录

针对你的需求——合并CSV中前三字段完全相同的记录,将对应第四字段数值用引号包裹合并——以下是可直接运行的批处理脚本,完全基于你提到的for /f命令实现:

完整脚本

@echo off
setlocal enabledelayedexpansion

:: 清空历史临时变量,避免残留影响
for /f "delims==" %%i in ('set key_ 2^>nul') do set "%%i="

:: 读取源CSV文件,替换成你的实际文件名
for /f "tokens=1-4 delims=, eol=" %%a in (input.csv) do (
    :: 用前三字段拼接唯一标识键
    set "key=%%a,%%b,%%c"
    :: 初始化或追加第四字段数值
    if not defined key_!key! (
        set "key_!key!=%%d"
    ) else (
        set "key_!key!=!key_!key!,%%d"
    )
)

:: 输出处理结果到新CSV文件,替换成你的目标文件名
> output.csv (
    for /f "tokens=1,* delims==" %%i in ('set key_') do (
        set "record=%%i"
        :: 去掉临时变量的前缀,还原前三字段
        set "record=!record:key_=!"
        echo !record!,"!j!"
    )
)

endlocal
echo 处理完成,结果已保存到output.csv

使用说明

  • 把脚本中的input.csv替换为你的源CSV文件名,output.csv替换为你要保存结果的文件名
  • 保存脚本为merge_csv.bat,和源CSV放在同一文件夹
  • 双击运行脚本即可

关键逻辑解释

  • setlocal enabledelayedexpansion:开启延迟变量扩展,让循环中能实时读取和修改变量值
  • 第一个for /f循环:清空之前运行脚本产生的临时变量,避免干扰本次处理
  • 第二个for /f循环:逐行读取CSV,按逗号分割为4个变量,用前三字段拼接成唯一键,将第四字段数值存入对应变量(不存在则初始化,存在则追加)
  • 第三个for /f循环:遍历所有存储的合并结果,按要求格式输出到新文件

注意事项

  • 确保源CSV的字段1、2、3不包含逗号,否则会导致分割错误(如果需要处理带逗号的字段,需额外逻辑处理引号包裹的字段,你的示例中未涉及此情况)
  • 脚本会跳过空行,若需要保留空行需额外调整

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 14:01:36