スクリプトで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) »