🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

Q&A

解決済

1回答

7024閲覧

CSVのファイル名を先頭項目に追加して1ファイルに統合したいが、1ファイル目を2回取得してしまう

usaginote1020

総合スコア8

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

0グッド

0クリップ

投稿2021/01/19 04:51

前提・実現したいこと

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/01/20 22:28

if !cnt!==0 ( set /p header=<!TARGET_FILE! echo ファイル名,!header!>>"!FILE_NAME!" ) が原因です。内容を理解してから実装しましょう。 あと何度も実行すると、dirにmatome.csv自体が含まれます。
guest

回答1

0

自己解決

ありがとうございました。
if !cnt!==0 (
set /p header=<!TARGET_FILE! echo ファイル名,!header!>>"!FILE_NAME!"
)
を削除することで解決いたしました。

投稿2021/01/21 05:42

usaginote1020

総合スコア8

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問