基于文件路径列表的同名CSV文件批量合并批处理问题
直接合并CSV文件的解决方案
你之前尝试的先复制再合并的方法确实容易因为同名文件覆盖、路径解析问题出岔子——其实咱们可以跳过复制步骤,直接用Windows命令行把列表里的所有CSV文件合并到目标文件里,简单又高效。
基础合并命令(保留所有表头)
如果你的CSV文件没有重复表头,或者不在乎表头重复,直接用这个命令:
for /f "delims=" %%i in (index.txt) do type "%%i" >> sourcing_directory.csv
delims=:确保带空格的文件路径不会被拆分,完整读取每一行type "%%i":读取指定路径下的CSV文件内容>>:把内容追加到目标文件sourcing_directory.csv里(如果用>会清空目标文件再写入,注意区分)
进阶合并(跳过重复表头)
如果每个CSV文件都有相同的表头,合并后会重复出现,咱们可以只保留第一个文件的表头,后面的文件跳过第一行:
@echo off setlocal enabledelayedexpansion set "first_file=1" for /f "delims=" %%i in (index.txt) do ( if !first_file! equ 1 ( type "%%i" >> sourcing_directory.csv set "first_file=0" ) else ( more +1 "%%i" >> sourcing_directory.csv ) ) endlocal
enabledelayedexpansion:让循环里的变量更新能实时生效first_file:标记是否是第一个要处理的文件more +1:跳过文件的第一行(也就是表头),只写入数据部分
为什么之前的方法没生效?
你之前用的xcopy方法是先把文件复制到同一文件夹,但如果多个文件同名,xcopy /y会直接覆盖旧文件,导致部分数据丢失;而且复制后还要手动合并,步骤繁琐。直接读取文件内容追加的方式,完全避开了这些问题。
内容的提问来源于stack exchange,提问作者Ian D
相关产品推荐
相关产品推荐

