人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

WSH等でのCSVファイル操作について

[項目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のエクスプローラから単体で実行可能な形式でのソースを希望します。

どなたかお解りになる方、何卒回答お願い致します。

●質問者: zc31s
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

質問者から

スクリプト又はバッチファイルを実行したいOSは
WindowsXP SP3 or Windows7 32bit版 SP1です。


1 ● 名無し
●0ポイント

できないなら諦める それがこの世で大切なことです
まずは自分でもっと学んでみてはいかがでしょうか?

と言いましても私はスキルすらありませんがね。


2 ● きゃづみぃ
●500ポイント ベストアンサー
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.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ