首页 > 解决方案 > 合并多个 CSV 时 CSV 行尾的空格

问题描述

考虑到我的 CSV 有一个标题,我编写了一批将当前目录中的多个 CSV 合并为一个。但是我得到的文件在每行的末尾都包含一个空格字符。

@echo off

pushd %~dp0

setlocal ENABLEDELAYEDEXPANSION

set cnt=1

for %%i in (*.csv) do (
    if !cnt!==1 (
        for /f "delims=" %%j in ('type "%%i"') do echo %%j >> merged.csv
    ) else if %%i NEQ merged.csv (
        for /f "skip=1 delims=" %%j in ('type "%%i"') do echo %%j >> merged.csv
    )
    set /a cnt+=1
    echo !cnt!
)

标签: csvbatch-filecmdmergespace

解决方案


  • 此批次将仅在第一个 csv 中保留标头
  • 如果您使用 var 作为标志并检查它是否存在,则不需要延迟扩展。
  • 您还需要排除merged.csv被附加(附加到自身)。

@echo off
pushd %~dp0
set "flag="
for /f "delims=" %%i in ('dir /B *.csv ^|find /v "merged.csv" ') do (
    if not defined flag (
        copy "%%i" merged.csv
        set flag=anything
    ) else more +1 "%%i" >>merged.csv
)
popd

推荐阅读