WindowsバッチでCSVのファイル名を先頭項目に追加して1ファイルに統合する方法
前回のWindowsバッチを使って複数ファイルを1つに統合する方法をご紹介しましたが、
今回はその方法を応用し、統合する各ファイル名をCSVの先頭項目に追加しつつ、
1つのファイルにまとめる方法をご紹介します。
バラバラのファイルをまとめて集計したいけど、1つずつ集計するのは大変な作業です。
そんな悩みを一瞬で解決できる方法ですので是非お試しください。
▼ 目次
作成ファイルのイメージ
学年の成績データをサンプルに説明します。
フォーマットが共通のCSVデータであれば、商品データ、受発注データ、ログファイルなど、
どんなデータでも応用ができます。
統合するCSV
このようなクラスごとに成績データを1つのファイルにまとめます。
データにクラス名が無いため、このまま統合すると何年何組かわからなくなります。
そこでファイル名(ここではクラス名)を先頭に付けてまとめます。
■1-A.csv(1年A組の試験成績)
・・・
■2-A.csv(2年A組の試験成績)
・・・
■3-B.csv(3年B組の試験成績)
統合ファイル
統合されるファイルはこのようになります。
ファイル名が先頭に追加されたCSVにまとめられます。
■matome.csv
ファイルは記事の下からダウンロードできるようにしています。
Windowsバッチでファイル統合
それではやってみましょう。
Windowsバッチの作成(ソースのコピペ)
まずはファイルをまとめるためのBATファイルを作ります。
ソースをコピペして「matome.bat
」で保存してください。
保存場所はまとめるファイルが配置されているフォルダです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
@echo off setlocal enabledelayedexpansion cd /d %~dp0 rem ファイルの文字コードがUTF-8の場合は設定 rem chcp 65001 rem ヘッダーを判定するための行カウント set /a cnt=0 rem ファイル名を設定 set FILE_NAME=matome.csv rem フォルダにあるCSVファイルを1つずつ処理 for /f %%a in ('dir /b *.csv') do ( set TARGET_FILE=%%a rem ファイル名を出力 echo TARGET_FILE=!TARGET_FILE! rem 1ファイル目であればヘッダーを出力 if !cnt!==0 ( rem 1行目を取得して出力 set /p header=<!TARGET_FILE! echo ファイル名,!header!>>"!FILE_NAME!" ) rem カウントを追加 set /a cnt=!cnt!+1 rem ファイルの1行目を飛ばして1行ずつ出力 for /f "usebackq delims= skip=1" %%b in ("!TARGET_FILE!") do ( echo !TARGET_FILE!,%%b>>"!FILE_NAME!" ) ) endlocal |
ポイント
- CSVファイル、batファイルはShift-JISを前提にしています
- CSVファイルがUTF-8の場合は「rem chcp 65001」のremを削除してください
- 「
echo ファイル名,!header!>>"!FILE_NAME!"
」箇所が統合ファイルのヘッダー部分です
【ファイル名】部分を任意の文字(クラス名)など変更して利用してください
作成後のイメージはこんな感じです。
バッチ実行
作成した「matome.bat」をダブルクリックで実行します。
フォルダにある全ファイルをまとめた【matome.csv
】が作成されます。
先頭にファイル名が追加されて1ファイルにまとめられていますね。
統合方法は以上です。
ソースをコピペしてBATファイルを作るだけで簡単にできますね。
Googleスプレッドシートのピボットテーブルで平均値集計
Googleスプレッドシートのピボットテーブルを利用して、
今回1つにまとめたファイルからクラスごとの平均値を集計してみましょう。
この手順はエクセルでも同様に集計することができます。
スプレッドシートの準備
matome.csvの中身をスプレッドシートにコピペします。
コピペが終わったら、右下に表示される貼り付けアイコンから「テキストを列に分割
」を選択します。
CSVファイルのカンマがセルに分割されて設定されます。
ピボットテーブルの作成
貼り付けたデータを全て選択状態にしてから、「データ > ピボットテーブル
」を選択します。
「データの範囲(選択済み)」「新しいシート」を選択して、ピボットテーブルを作成します。
新しいシートに空のピボットテーブルテーブルが作成されました。
ピボットテーブルの平均値設定
続いてピボットテーブルエディタから平均を求める設定を行います。
行・値の設定から簡単にクラスごとの平均値を集計できます。
- ”行”の設定
・【ファイル名】を追加- ”値”の設定
・「表示」に ”列” を選択
・【英語】【国語】【社会】【理科】【数学】の各項目を追加
・「集計方法」に ”AVERAGE” を選択
・「表示方法」に “デフォルト” を選択
ファイルがバラバラだと簡単にはできないですが、
Windowsバッチを利用することで簡単に平均値を求めることができましたね。
サンプルのダウンロード
今回利用したサンプルファイルはこちらからダウンロードしてご利用ください。
尚、3年B組はこだわりのファイルになっています。
うまくファイルをまとめることができましたか?
複数のファイルでバラバラになったファイルを集計するとき、
WindowsのBatファイルやスプレッドシートをうまく利用することで、
劇的に業務を効率化することができます。
弊社ではお客様の課題を解決や業務の効率化に全力で取り組んでいます。
コストを抑えた最適な方法をご提案致しますので、ご興味がありましたら
お気軽にお問合せください。