[項目1]
0000,1111-11111,2222
[項目2]
3333,444-444,5555
6666,777-777,8888
[項目3]
9999,AAAA-AAAAA,BBBBB
CCCC,DDDD-DDDDDD,EEEEE
FFFF,0000-0000000,11111
あるアプリケーションから出力した、上記の様なCSVファイルがあります。
このファイルの中で、下記の様に[項目2]の2列目のみ削除し「上書き」を行いたいです。
[項目1]
0000,1111-11111,2222
[項目2]
3333,,5555
6666,,8888
[項目3]
9999,AAAA-AAAAA,BBBBB
CCCC,DDDD-DDDDDD,EEEEE
FFFF,0000-0000000,11111
元データの[項目2]の1列目は必ず4文字、2列目は必ず7文字です。
また、データがあるフォルダには複数のCSVファイルがありますが、
処理させたい物は DATA1111.CSV(名前固定)です。
・文字数で判断し削除
or
・最初のカンマから次のカンマまで削除
で行けそうでしたが、自分のスキルでは挫折してしまいました。
WSHやバッチファイル等、Windowsのエクスプローラから単体で実行可能な形式でのソースを希望します。
どなたかお解りになる方、何卒回答お願い致します。
Dim objFSR, objTSR Dim objFSW, objTSW Set objFSR = CreateObject("Scripting.FileSystemObject") Set objTSR = objFSR.OpenTextFile("DATA1111.CSV",1,0) Set objFSW = CreateObject("Scripting.FileSystemObject") Set objTSW = objFSW.CreateTextFile("DATA1111.CSV_bak",true) If Err.Number > 0 Then WScript.Echo "Open Error" Else Do Until objTSR.AtEndOfStream a = objTSR.ReadLine if mid(a,5,1)="," and mid(a,13,1)="," then b= left(a,5) & right(a,len(a)-12) objTSW.WriteLine b else objTSW.WriteLine a end if Loop End If objTSW.Close objTSR.Close objFSR.DeleteFile "DATA1111.CSV",True objFSW.MoveFile "DATA1111.CSV_bak","DATA1111.CSV" Set objFSR = Nothing Set objFSW = Nothing
Dim objFSR, objTSR Dim objFSW, objTSW Set objFSR = CreateObject("Scripting.FileSystemObject") Set objTSR = objFSR.OpenTextFile("DATA1111.CSV",1,0) Set objFSW = CreateObject("Scripting.FileSystemObject") Set objTSW = objFSW.CreateTextFile("DATA1111.CSV_bak",true) If Err.Number > 0 Then WScript.Echo "Open Error" Else Do Until objTSR.AtEndOfStream a = objTSR.ReadLine if mid(a,5,1)="," and mid(a,13,1)="," then b= left(a,5) & right(a,len(a)-12) objTSW.WriteLine b else objTSW.WriteLine a end if Loop End If objTSW.Close objTSR.Close objFSR.DeleteFile "DATA1111.CSV",True objFSW.MoveFile "DATA1111.CSV_bak","DATA1111.CSV" Set objFSR = Nothing Set objFSW = Nothing
コメント(0件)