0

フォルダーに数十個の CSV ファイルがあります。する必要がある:

  1. null 文字を取り除く (\x00)
  2. 末尾に CRLF が 1 つだけあることを確認します (0、1、またはそれ以上の場合もあります)。
  3. すべてのファイルを 1 つのファイルに結合します。各ファイルにはヘッダーがありますが、結合されたファイルにはヘッダーが 1 つだけ必要です。
  4. [オプション: 新しい csv には追加の列があります。古いファイルに新しい列 (w ブランク) を追加することは可能ですか?]

これまでのところ、ヘッダーを 1 つだけ結合して保持するには、次のようにします。

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

ただし、文字を置き換える/削除する方法がわかりません。

4

1 に答える 1

0

これは を使用して動作する場合がありGnuSEDます。Sed は、コピー中に各ファイルの末尾に CRLF を追加した後、ヌル文字とすべての余分な空白行を削除します。

Moreには、一時停止する各ファイルの 64K 行にバグがあり、問題がある場合はタブをスペースに変換します。

@echo off
setlocal
set first=1
>"combined.bin" (
for %%F in (*.csv) do (
    if defined first (
        type "%%F"
        set "first="
      ) else (
     more +1 "%%F"
    )
   echo(
  )
)
sed -e "/^$/"d -e "s/\x00//g" < "combined.bin" > "combined.csv"
del "combined.bin"
于 2013-11-09T07:51:23.593 に答える