2017年11月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    
無料ブログはココログ

« バッチファイルでcsvファイルを整形する。 | トップページ | スクリプトでcsvファイルを整形する。(その2) »

2010年12月 8日 (水)

スクリプトでcsvファイルを整形する。

すべての値を、空の値も、""で囲んで、標準出力に出します。
× aaa,b b,,"ddd","e e"
○ "aaa","b b","","ddd","e e"

cscript csvfix.vbs 入力ファイル

Option Explicit
Dim Path
For Each Path In WScript.Arguments
  csvfix Path
Next

Sub CSVFix(Path)
Dim fso
Dim File
Dim Line
Set fso=CreateObject("Scripting.FileSystemObject")
Set File=fso.OpenTextFile(Path)
Do While Not File.AtEndOfStream
  Line=File.ReadLine()
  WScript.StdOut.WriteLine Fix(Line)
Loop
End Sub

Function Fix(Line)
Dim fQuoting
Dim chars
Dim k
Dim char

ReDim chars(Len(Line)-1)
fQuoting=False
For k=1 To Len(Line)
  char=Mid(Line,k,1)
  If char=Chr(34) Then fQuoting=Not fQuoting
  If char=Chr(44) Then If Not fQuoting Then char=vbNullChar
  chars(k-1)=char
Next
chars=Split(Join(chars,Empty),vbNullChar)
For k=0 To UBound(chars)
  chars(k)=Chr(34) & Replace(chars(k),Chr(34),Empty) & Chr(34)
Next
Fix=Join(chars,Chr(44))
End Function

hta.commandLineのパーズ用スクリプトをベースに、空白区切りをコンマ区切りに、連続区切りを分離に変えてます。

« バッチファイルでcsvファイルを整形する。 | トップページ | スクリプトでcsvファイルを整形する。(その2) »