【バッチ】for文で区切り文字ごとにCSVを出力したい

delimsは、「区切りに使う文字列」じゃないです。
「区切りに使う文字(1文字限定)」を複数個並べた物です。
「文字で区切る」のは可能ですが「文字列で区切る」機能はありません。

文字列を1文字に置換してから区切ると良いでしょう。

これだとpiyo.csvの中身がhoge.txtと同じになってしまいます。

tokens=*は、「全部」を意味するので、行がそのまま出て来て当然です。(先頭と末尾の区切り文字は削除されるが)
個別に扱うなら、tokens=1-9などと番号を指定します。

CMD

1setlocal enabledelayedexpansion 2set fuga=!APP_ROOT!\piyo.csv 3type nul > !fuga! 4for /f "delims=" %%X in (hoge.csv) do ( 5 set X=%%X 6 set X=!X:iiiii=,! 7 for /f "tokens=3-10 delims=," %%A in ("!X!") do ( 8 echo %%A,%%B 9 echo %%C,%%D 10 echo %%E,%%F 11 echo %%G,%%H 12 )>> !fuga! 13)

1行が4組限定なら上記のように比較的簡単ですが、個数が定まらない場合は、
1組分ずつ削除しながらになるので、少し面倒です。

コメントを投稿

0 コメント