批量合并大型 CSV 文件并删除重复标题

0 windows csv cmd batch-file

我正在尝试将几个具有相同字段的大型 csv 文件结合起来。我能做的最好的是:

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

这对小文件很有效,但是当文件较大时,more 命令会卡在每个屏幕转储的末尾。

尽我所能,在将文件写入 new.csv 时,我无法获得更多内容来直接运行整个文件 - 任何人都可以帮忙吗?

Mag*_*goo 5

@ECHO OFF
SET first=y
SET newfile=new.csv
for %%F in (*.csv) do IF NOT %%F==%newfile% (
  if defined first (
    COPY /y "%%F" %newfile% >nul
    set "first="
  ) else (
    FOR /f "skip=1delims=" %%i IN (%%F) DO >> %newfile% ECHO %%i
  )
) 
Run Code Online (Sandbox Code Playgroud)

编辑
要支持 CSV 中的空行,您可以将内部 FOR 替换为:
for /f "skip=1 tokens=1* delims=:" %%i in ('findstr /n "^" %%F') do >> %newfile% echo.%%j