• 締切済み

バッチでCSVを処理する時、空の項目があった場合

 例えば、以下のような二行からなるCSVファイルが有ります。 TK,001,A,DC, ,5,12 TK,002,B,DC,13,6,13   バッチで、このファイルを読み込んで、以下のようなレイアウトでCSVファイルを出力したいです。 TK,A, ,12 TK,B,13,13  しかし、一行目のデータに空の項目が発生していますので、 for /f "delims=, tokens=1-7" %%I in (sample.csv) do ( … )  で処理した場合、自動に、空の項目を飛ばし、次の項目を読み込みますので、出力ファイルは以下のようになってしまいます: TK,A,5 ,12 TK,B,13,13    こういうことを避けたいですが、なかなかいい方法が見つかりません。解決方法をご存知の方、教えていただけませんか?

みんなの回答

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.1

お書きのように、カンマの間に空白がある場合は、ちゃんと空白が読み取られますよ。 空白が無く、カンマが連続しているときは、連続した全体を1つの区切り文字と認識しますけど。 もし、空白が無く連続したカンマを別々のカンマと認識したいなら、まず連続したカンマを、,@, のように間にデータ中に現れ得ない別の文字を入れた物に置換してから読み取って、出力の時に @ をまた空に戻すような方針で。