12

同じヘッダーを持つ複数のCSVファイルがあり、それらをバッチで結合して、単一のヘッダーのみを保持しようとしています。何か案は?

4

4 に答える 4

12

MORE +11行目以外のすべてを出力するために使用できます。

>new.csv (
   type file1.csv
   more +1 file2.csv
   more +1 file3.csv
   REM etc.
)

もちろん、必要に応じて、各ファイルでスキップする行数を調整できます。

現在のフォルダ内のすべての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

明らかに、これはすべてのcsvファイルが同じ形式を共有している場合にのみ効果的です。

編集2015-07-30: いくつかの制限があります:

  • タブ文字はスペースの文字列に変換されます
  • 各CSVソースファイルの行数は64k行未満である必要があります
于 2012-10-05T17:43:18.103 に答える
6

現在のフォルダー内のすべての CSV ファイルを結合するための dbenham の方法に問題がありました。結果の 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"
    )
  )
)
于 2013-10-25T14:29:04.967 に答える