
バッチファイルで
 ・複数のCSVファイルを
 ・1つのCSVファイルに纏める方法
を紹介します!

各CSVファイルに見出し行があっても、
上手いこと1つのファイルに纏める方法です!
コード
ここでは例として
 ・デスクトップ配下のフォルダ「test」配下にある
 ・「対象ファイル(今回は全てCSVファイル)」を
 ・1つのCSVファイルに纏める方法
を紹介します。




@echo off
rem 遅延環境変数を使用するための宣言
setlocal enabledelayedexpansion
rem 対象フォルダ
set targetFolder=C:\Users\user\Desktop\test
rem 対象ファイル
set targetFile=*.csv
rem 出力ファイルのパス
set outputFile=C:\Users\user\Desktop\merge.csv
rem 1ファイル目かどうかを判定するためのカウンタ変数
set /a fileCount=0
rem 既に出力ファイルが存在したら削除
if exist "%outputFile%" (
    del /f "%outputFile%"
)
rem 対象ファイルの文字コードがUTF-8の場合に実行
rem chcp 65001
rem 指定フォルダ配下の全ての対象ファイルに対して処理を行う
for %%a in ("%targetFolder%\%targetFile%") do (
    rem カウンタ変数をカウントアップ
    set /a fileCount=!fileCount! + 1
    set file=%%a
    
    rem 1ファイル目のみ、(1行目を含め)まるっと出力
    rem 1ファイル目以外は、1行目を飛ばして1行ずつ出力
    if !fileCount!==1 (
        type !file! > "%outputFile%"
    ) else (
        for /f "skip=1" %%b in (!file!) do (
            set line=%%b
            echo !line!>>"%outputFile%"
        )
    )
)
rem 文字コードをUTF-8へ変更した場合、元に戻す(Shift_JISに戻す)ために実行
rem chcp 932
rem 結果確認
echo 対象ファイル数:%fileCount%
if %fileCount%==0 (
    echo 対象ファイルが無かったため纏めませんでした。
) else (
    echo 対象ファイルを1ファイルに纏めました。
)
echo.
pause
exit実行結果
複数のCSVファイルを1つのCSVファイルに纏めることができました。
見出し行も上手いことできました。



参考
上記で使用した以下の詳細は、公式サイトをご確認ください。
●「del」コマンド
●「chcp」コマンド
●「for」コマンド
●「type」コマンド
●「setlocal」コマンド

 
  
  
  
  