forコマンドのdelimsオプションで「","」を指定したい
以下のような
データにコンマが含まれる(単価の項目)CSVファイルから
特定の列を抽出したCSVファイルを作ります。
"顧客ID","住所(送先)","商品ID","商品名","単価","数量","出荷日",
"001","○○市○○町○○","202","□□","1,500","10","2009/7/7"
"顧客ID","住所(送先)","商品ID","商品名","単価","数量","出荷日",
"002","○○市○○町△△","503","◎◎","1,980","5","2009/7/6"
現在は以下のようなバッチファイルで対応しています。
@echo off
:顧客ごとのヘッダ情報の行を削除
type syukjnminohyo.csv | find /v "顧客" > temp1.txt
:ファイルデータを環境変数に代入し
:subでデータの区切りである「","」をタブに変換
for /f "tokens=1,* delims=" %%a in (temp1.txt) do (
set line=%%a
call :sub
)
:タブを区切りとして特定の列を抽出
for /f "tokens=1,2,5,6 delims= " %%a in (temp2.txt) do (
@echo "%%a","%%b","%%c","%%d" >> out.txt
)
:sub
set line=%line:","= %
echo %line:"=% >> temp2.txt
途中でファイルも作られるなど
エレガントでない部分が多いため
皆様のお力をお貸し頂きたく質問いたしました。
よろしくお願いします。
お礼
ham_kamoさんありがとう御座います。 上記の指摘どおりに変更したところ正常に稼動してくれました。 次回に生かしたいと思います。 話は変わってしまうのですが、 FOR文にて読み込んでいる(C:\PerfLogs\memory_02071801.csv)が 他のプロセスにて使用されているときにアクセスする事は可能でしょうか。 実はWindows既存のパフォーマンスのカウンタログで、メモリー状況を出力させて、 バッチにて一定間隔で監視させる設定を行いたいのですが難しいですかね・・・。 何かオプションで回避できるものがあればいいのですが・・。