バッチファイルで
・複数の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」コマンド