前提・実現したいこと
WindowsバッチでCSVのファイル名を先頭項目に追加して1ファイルに統合したい。
30のCSVファイルを先頭項目にファイル名を追加して、1ファイルに結合する。
それぞれのCSVファイルは2列×1,000行程度のデータ量
発生している問題・エラーメッセージ
下記のコードを実行したところ、30のCSVファイルを先頭項目にファイル名を追加して、1ファイルに作成できたが、
先頭の1,000行は2列×1,000行の読み込み1ファイル目が入ってしまい、読み込み1ファイル目のデータが重複した形で作成されてしまう。
【本来作成したいファイル】
ファイル1,名前1,住所1
ファイル1,名前2,住所2
ファイル1,名前3,住所3
ファイル2,名前5,住所5
ファイル2,名前6,住所6
・・・・
ファイル30,名前1000,住所1000
【作成されてしまうファイル】
名前1,住所1
名前2,住所2
名前3,住所3
ファイル1,名前1,住所1
ファイル1,名前2,住所2
ファイル1,名前3,住所3
ファイル2,名前5,住所5
ファイル2,名前6,住所6
・・・・
ファイル30,名前1000,住所1000
該当のソースコード
@echo off setlocal enabledelayedexpansion cd /d %~dp0 set /a cnt=0 set FILE_NAME=matome.csv for /f %%a in ('dir /b *.csv') do ( set TARGET_FILE=%%a echo TARGET_FILE=!TARGET_FILE! if !cnt!==0 ( set /p header=<!TARGET_FILE! echo ファイル名,!header!>>"!FILE_NAME!" ) set /a cnt=!cnt!+1 for /f "usebackq delims= skip=1" %%b in ("!TARGET_FILE!") do ( echo !TARGET_FILE!,%%b>>"!FILE_NAME!" ) ) endlocal
回答1件
あなたの回答
tips
プレビュー