批量合并CSV删除标题

Ken*_*n J 11 csv dos batch-file

我有多个具有相同标题的CSV文件,我正在尝试将它们组合在一起,并且只保留一个标题.有任何想法吗?

dbe*_*ham 11

您可以使用MORE +1输出除第1行以外的所有行.

>new.csv (
   type file1.csv
   more +1 file2.csv
   more +1 file3.csv
   REM etc.
)
Run Code Online (Sandbox Code Playgroud)

显然,您可以根据需要调整每个文件中要跳过的行数.

要组合当前文件夹中的所有csv文件: 编辑:已修改为不使用新创建的输出csv作为输入

@echo off
setlocal
set first=1
>new.csv.tmp (
  for %%F in (*.csv) do (
    if defined first (
      type "%%F"
      set "first="
    ) else more +1 "%%F"
  )
)
ren new.csv.tmp new.csv
Run Code Online (Sandbox Code Playgroud)

显然,只有当所有csv文件共享相同的格式时,这才有效.

编辑2015-07-30: 有一些限制:

  • 制表符将转换为一串空格
  • 每个CSV源文件必须少于64k行


小智 6

我在使用dbenham的方法来解决当前文件夹中所有CSV文件的问题.它偶尔会获取生成的CSV并将其包含在集合中.我修改它以避免这个问题.

@echo off
setlocal
set first=1
set fileName="combinedFiles.csv"
>%fileName% (
  for %%F in (*.csv) do (
    if not "%%F"==%fileName% (
      if defined first (
        type "%%F"
        set "first="
      ) else more +1 "%%F"
    )
  )
)
Run Code Online (Sandbox Code Playgroud)