
以下のような
データにコンマが含まれる(単価の項目)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
途中でファイルも作られるなど
エレガントでない部分が多いため
皆様のお力をお貸し頂きたく質問いたしました。
よろしくお願いします。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
バッチでやるなら方針としてはそれしかないと思います。
中間ファイルを使わないようにすると、
@echo off
(for /f "delims=" %%a in ('find /v "顧客" ^< syukjnminohyo.csv') do (
set line=%%a
call :sub
))>out.txt
goto :EOF
:sub
set line=%line:","=★%
for /f "tokens=1,2,5,6 delims=★" %%a in ("%line:"=%") do (
echo "%%a","%%b","%%c","%%d"
)
タブは見えないので、代わりに★を使いました。
No.2
- 回答日時:
CSVはjetProvider経由でSQL発行したほうが簡単ですよ。
このあたりを参考にしてください。
http://tuka.s12.xrea.com/index.xcg?p=ADO
csvのときは接続文字列が、
cnstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=フォルダ名;Extended Properties=""text;ReadOnly=True;HDR=YES;FMT=Delimited"""
といった感じです。
HDR = YESはヘッダー部ありを意味しています。
あとは
SELECT * FROM ファイル名
といった感じでSQLを発行し抽出してしまえばよいのです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
.txtではなく.logの方が良いの...
-
テキストファイルのタブをカン...
-
多数のサブディレクトリ内のフ...
-
ファイルの最後に文字列挿入
-
バッチ(bat)でリストファイルか...
-
UWSCでテキストファイルを開い...
-
コマンドプロンプトで指定した...
-
シェルでファイルから1行づつ...
-
unlinkで削除されないのは?
-
VBScriptでtxtファイルの中身を...
-
テキストファイルで提出とは?
-
COPYコマンドで結合すると余計...
-
ファイル名の一部をbatで変更し...
-
エクセルのVBAについて とある...
-
ftpコマンドを実行すると「425 ...
-
コマンドプロンプトのエラーに...
-
win10の「フォト」で、「次へ」...
-
大量のフォルダからひとつのフ...
-
一括でフォルダと同じ名前にフ...
-
コマンドプロンプトの「%1」と...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチ処理でファイルの中身を...
-
.txtではなく.logの方が良いの...
-
VBAでワークシートを引数として...
-
テキストファイルで提出とは?
-
多数のサブディレクトリ内のフ...
-
psqlでエラーログをとりたい
-
拡張子を元に戻す
-
COPYコマンドで結合すると余計...
-
バッチファイルからVBAに引数を...
-
renameコマンドについて
-
ファイルの最後に文字列挿入
-
3つ以上のテキストファイルをコ...
-
バッチファイルで文字列削除に...
-
VBSでフォルダ内のテキストファ...
-
ftpコマンドで複数のファイルを...
-
ファイル内容の修正、行削除に...
-
★★★PowerShellのpatternについ...
-
コマンドプロンプトで指定した...
-
forfilesで検索したファイルを...
-
バッチファイル 複数ファイル...
おすすめ情報