2012-03-07

Windows バッチファイル : 任意の項目数の CSV ファイルの内容を読み込みたい


Windows バッチファイルで任意の項目数の CSV ファイルの内容を読み込みたい。
  • csv ファイルを読み込む
  • コンソールに出力する
  • 一項目一行に表示する



以前、 にてファイルの内容を読み込んでみたけど、for 文は 26 個までのトークンしか指定できない(help for)ぽいので他にないか探してみた。



○ CSV ファイルの内容を読み込みたい

@echo off

FOR /F "delims=" %%A IN (sample.csv) DO (
    echo +line: %%A
    FOR %%a IN (%%A) DO (
        echo -item: %%a
    )
)

Ex. カンマ区切り
■ sample.csv
"a","b","c","d","e"
"あ","い","う","え","お"
■ 実行結果
C:\>sample.bat
+line: "a","b","c","d","e"
-item: "a"
-item: "b"
-item: "c"
-item: "d"
-item: "e"
+line: "あ","い","う","え","お"
-item: "あ"
-item: "い"
-item: "う"
-item: "え"
-item: "お"
※ ダブルクォートつきの文字が %%a に設定されるぽい

Ex. タブ区切り
■ sample.csv
"a" "b" "c" "d" "e"
"あ" "い" "う" "え" "お"
■ 実行結果
C:\>sample.bat
+line: "a" "b" "c" "d" "e"
-item: "a"
-item: "b"
-item: "c"
-item: "d"
-item: "e"
+line: "あ" "い" "う" "え" "お"
-item: "あ"
-item: "い"
-item: "う"
-item: "え"
-item: "お"
※ ダブルクォートつきの文字が %%a に設定されるぽい



◇ 環境

Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

2 件のコメント:

  1. 実行結果に誤りがあります
    X delims=
    O delims=,
    また1列目しか読み込まないです

    返信削除
  2. コメントありがとうございます。

    ただ、わたしの実行環境では上記のコードで問題ないです ... 。
    マシン
    ・Windows 7 Professional 64bit
    ・Windows 2000 Server(だったと思います)


    「delims=,」とすると各行の先頭の項目のみが ECHO で表示されるのではないでしょうか?

    - 実行結果 -------
    +line: "a"
    -item: "a"
    +line: "あ"
    -item: "あ"
    ------------------

    返信削除