
以下のような
データにコンマが含まれる(単価の項目)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で質問しましょう!
似たような質問が見つかりました
- 経営情報システム accessでの請求管理について 12 2022/06/11 16:20
- その他(プログラミング・Web制作) Windowsのバッチファイルについてご教示ください 5 2023/07/25 20:23
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- PHP htmlで複数の個数入力欄を表示させるには 1 2022/09/20 03:11
- その他(データベース) c言語の問題です。これを踏まえてコーディングしたいのでおしえていただきたいです。 3 2023/08/03 09:27
- その他(データベース) accessについて 2 2022/05/31 16:58
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Excel(エクセル) エクセル 多数のファイルから値を抜き出したい 4 2022/12/12 16:49
- Windows 10 Windowsのバッチファイルで正規表現の置換方法について… 4 2022/12/09 16:00
- Excel(エクセル) マクロでテキストファイルを読み込んだ際の最終セルにデータと改行が含まれる問題の改善方法 2 2022/03/25 16:50
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッチ処理でファイルの中身を...
-
.txtではなく.logの方が良いの...
-
VBAでワークシートを引数として...
-
テキストファイルで提出とは?
-
ファイル内容の修正、行削除に...
-
renameコマンドについて
-
UWSCでテキストファイルを開い...
-
エクセルの各セルの内容をそれ...
-
拡張子を元に戻す
-
ファイル名の一部をbatで変更し...
-
多数のサブディレクトリ内のフ...
-
「***.txt」 から 「***.pl」...
-
psqlでエラーログをとりたい
-
バッチファイルからVBAに引数を...
-
ADODB.Streamで開いたファイル...
-
Windows マシンでFTPバッチが動...
-
バッチファイルについて
-
バッチファイルで文字列削除に...
-
javaで大量のファイルを読み込...
-
3つ以上のテキストファイルをコ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチ処理でファイルの中身を...
-
.txtではなく.logの方が良いの...
-
VBAでワークシートを引数として...
-
多数のサブディレクトリ内のフ...
-
COPYコマンドで結合すると余計...
-
バッチファイル 複数ファイル...
-
psqlでエラーログをとりたい
-
ファイル内容の修正、行削除に...
-
バッチファイルで文字列削除に...
-
テキストファイルで提出とは?
-
拡張子を元に戻す
-
ファイルの最後に文字列挿入
-
UWSCでテキストファイルを開い...
-
エクセルの各セルの内容をそれ...
-
ファイル名の一部をbatで変更し...
-
renameコマンドについて
-
accessでSQL文を使ってcsvファ...
-
3つ以上のテキストファイルをコ...
-
Windowsのバッチファイルを利用...
-
ファイルのワイルドカードについて
おすすめ情報