【bat】バッチファイルでCSVを結合する方法

CSVファイルの結合作業は、データ管理や集計の際によく行われる作業です。手動で行うのは面倒ですが、バッチファイルを使えば自動化でき、効率的に作業を進めることができます。今回は、複数のCSVファイルを1つに結合するバッチファイルの作成方法をご紹介します。

バッチファイルの基本構造

バッチファイルを使ってCSVファイルを結合するための基本的なスクリプトは以下のようになります。このスクリプトは、同じディレクトリ内のすべてのCSVファイルを結合し、output.csvという名前の新しいファイルに保存します。

@echo off
setlocal enabledelayedexpansion

REM 結合するCSVファイルのパスを指定
set "output=output.csv"
set "firstFile=true"

REM 既存の出力ファイルを削除
if exist %output% del %output%

REM *.csv で全てのCSVファイルを処理
for %%f in (*.csv) do (
    echo 処理中: %%f

    REM ヘッダーを最初のファイルのみに追加
    if "!firstFile!"=="true" (
        type "%%f" >> %output%
        set "firstFile=false"
    ) else (
        REM 2行目以降を追加(ヘッダーをスキップ)
        more +1 "%%f" >> %output%
    )
)

echo 完了: %output% が作成されました。

スクリプトの詳細説明

@echo off と setlocal enabledelayedexpansion

この2つのコマンドは、スクリプトの実行中に表示されるメッセージを制御し、変数の遅延展開を有効にします。これにより、ループ内での変数の変更が正しく反映されます。

出力ファイルの設定と削除

set "output=output.csv"
if exist %output% del %output%

ここでは、結合後のCSVファイル名を指定し、すでに存在する場合は削除します。

CSVファイルの処理

for %%f in (*.csv) do (
    echo 処理中: %%f
    ...
)

このループでは、カレントディレクトリ内のすべてのCSVファイルを処理します。

ヘッダーの処理

最初のCSVファイルのヘッダーをoutput.csvに書き込み、その後のファイルではヘッダーをスキップします。

if "!firstFile!"=="true" (
    type "%%f" >> %output%
    set "firstFile=false"
) else (
    more +1 "%%f" >> %output%
)

最初のファイルはそのまま結合し、次のファイルからはmore +1コマンドでヘッダー行をスキップしてデータのみを追加します。

実行方法

  1. 上記のスクリプトをテキストエディタにコピーし、merge_csv.batなどの名前で保存します。
  2. スクリプトを保存したフォルダにCSVファイルを配置します。
  3. バッチファイルをダブルクリックして実行します。

output.csvという名前で結合されたCSVファイルが作成されます。

まとめ

バッチファイルを使えば、CSVファイルの結合作業を簡単に自動化できます。特に大量のデータを扱う場合に役立ちますので、ぜひ試してみてください。