CSVのファイル名先頭3文字を、CSVの各行の先頭に格納したい。
解決したいこと
Windows11のDOS窓で作業します。大量のcsvファイルの1行1行の先頭に、ファイル名の先頭3文字を入れたいです。
例)
数十個のcsvファイルがあります。ファイル名は
025〇〇区東支店.csv
204××区南支店.csv
259△△区南川支店.csv など
1つのcsvの中身の各行の先頭にファイル名の先頭3桁を入れたいです。
025〇〇区東支店.csvの中身
【実行前】
商品AAA,単価,個数,販売先
商品BBB,単価,個数,販売先
商品CCC,単価,個数,販売先
【実行後】
025,商品AAA,単価,個数,販売先
025,商品BBB,単価,個数,販売先
025,商品CCC,単価,個数,販売先
手順としまして
1 ファイル名を取得
2 ファイル名の先頭3文字を取得
3 ファイルの中身の先頭に3文字を張り付け
4 ファイルの最後の行まで行う
5 次のファイルを読む
バッチで実行する方法を教えて下さい。
別のコミュニティサイトを参考にしました、元のソースです。
6行でファイル名を各行の先頭に貼り付けていました。短さに驚きました。
作者様の思考力に脱帽です。これを元に自分も頑張ってみようと
奮闘しましたが…
参考ソース
cd /d "対象ディレクトリ"
for %%A in (*.csv) do (
findstr "^" %%A NUL > tempfile
move %%A %%A.bak
move tempfile %%A
)
この状態ではファイル名全部が、各行の先頭に付加されます。
以下のようにset stringで先頭から3文字を取得…
にしてみましたが結果は0バイトのファイルができるだけでした。
自分で試したこと
cd /d "対象ディレクトリ"
for %%A in (*.csv) do (
%%A:~0,3%
set string=%%A:~0,3%
findstr "^" string > tempfile
move %%A %%A.bak
move tempfile %%A
)
ファイル名の先頭3文字を取得できません。
また、先頭3文字を各行に入れる手順はどのようにすればよいでしょうか。