【bat】バッチファイルで複数のCSVファイルを一つにまとめる方法

CSVファイルのデータをまとめる作業は、データ分析や報告書作成などでよく必要になります。手作業で行うと手間がかかりますが、バッチファイルを使えば自動化することができます。今回は、複数のCSVファイルを1つのCSVファイルにまとめるためのバッチファイルの作成方法をご紹介します。

必要な準備

まず、バッチファイルを作成するために以下の手順を踏みましょう。

  1. 新しいテキストファイルを作成します。
  2. 作成したテキストファイルの拡張子を.batに変更します。例:combine_csv.bat

バッチファイルの内容

次に、以下のコードをバッチファイルに貼り付けます。このコードは、特定のディレクトリ内のすべてのCSVファイルを1つに結合します。

@echo off
setlocal enabledelayedexpansion

rem 出力ファイル名
set outputFile=combined.csv

rem 出力ファイルが既に存在する場合は削除
if exist %outputFile% del %outputFile%

rem ヘッダーを追加するフラグ
set headerAdded=false

rem CSVファイルをループ処理
for %%f in (*.csv) do (
    rem 最初のファイルからヘッダーを取得して出力ファイルに追加
    if not !headerAdded! == true (
        rem 最初の行を取得して出力ファイルに書き込む
        for /f "usebackq tokens=* delims=" %%A in (%%f) do (
            echo %%A >> %outputFile%
            set headerAdded=true
            goto :skipHeader
        )
    )
    :skipHeader
    rem ヘッダー行を除く内容を出力ファイルに追加
    for /f "usebackq skip=1 tokens=* delims=" %%B in (%%f) do (
        echo %%B >> %outputFile%
    )
)

endlocal
echo CSVファイルの結合が完了しました。
pause

コードの説明

このバッチファイルのコードについて詳しく説明します。

  • @echo off:バッチファイルの実行中のコマンド表示をオフにします。
  • setlocal enabledelayedexpansion:遅延変数展開を有効にします。
  • set outputFile=combined.csv:結合後の出力ファイル名を設定します。
  • if exist %outputFile% del %outputFile%:既存の出力ファイルを削除します。
  • for %%f in (*.csv) do:ディレクトリ内のすべてのCSVファイルを処理します。
  • for /f “usebackq tokens=* delims=” %%A in (%%f) do:最初のファイルからヘッダーを取得して出力ファイルに追加します。
  • for /f “usebackq skip=1 tokens=* delims=” %%B in (%%f) do:ヘッダー行を除いた内容を出力ファイルに追加します。

バッチファイルの実行方法

  1. 作成したバッチファイルをダブルクリックして実行します。
  2. スクリプトが実行され、同じディレクトリ内のすべてのCSVファイルがcombined.csvという1つのファイルに結合されます。
  3. 処理が完了すると「CSVファイルの結合が完了しました。」というメッセージが表示されます。

まとめ

バッチファイルを使うことで、複数のCSVファイルを簡単に1つにまとめることができます。手動での結合作業を自動化することで、時間を大幅に節約し、ミスを防ぐことができます。是非この方法を試してみてください!