• ベストアンサー

ファイルの中身を書き換える

ファイルを読み込み、文字列検索をして該当データがあったらその文字列を書き換えたいのです。ファイルを読んで別のファイルに書き出す方法はわかるのですが、そこだけを書き換えて、ほかはそのままにするにはどうすればいいかわかりません。どなたか教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

#2の補足について >書き込みできません。というエラーがでます deleteFileする時に、ファイルが閉じられていないのが原因です。 Wendの後の行に data.Close data2.Close を記入してファイルをクローズして下さい。 これで、ちゃんと動作するようになります。 ちなみに、 Data2.Write(Line) Data2.Write chr(13) & chr(10) は Data2.Writeline(Line) で同じ意味です。 テンポラリファイル名は tempFileName = Fso.GetTempName でファイル名が作れます。(実際にファイルが作られるのではないです、名前だけ)

その他の回答 (2)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

>同じファイルに上書きするにはどうしたらいいんでしょうか? 普通は、 テンポラリファイルを作って、 元のファイルから読み出し、 テンポラリファイルに書き出していき 作業が終了した時点で 元のファイルを削除し、 テンポラリファイルの名前を元のファイルにリネームします。

satosai
質問者

補足

すいません。どうもうまくいきません。書き込みできません。というエラーがでます。どこがいけないのでしょうか?おわかりになりますか? <% 'Sub(A,B) str=Request("A") str2=Request("B") Set Fso =CreateObject("Scripting.FileSystemObject") Set Data =Fso.OpenTextFile(Server.Mappath("../xxxx/xxxx1.txt"),1) Set Data2=Fso.OpenTextFile(Server.Mappath("../xxxx/xxxx2.txt"),2,true) 'データ分だけ while(Not Data.AtEndOfStream) '1行ずつ読む Line=Data.readLine '入力された文字が含まれてるかどうか検索 position=InStr(Line,str) 'あれば前半部分を格納 if NOT position=0 Then '=を探して=までを前半部分として格納 equal=InStr(Line,"=") First=Left(Line,equal) '前半部分に入力された値を結合 Line=First&str2 end if Data2.Write(Line) Data2.Write chr(13) & chr(10) Wend 'end sub 'ファイル削除 fso.DeleteFile Server.Mappath("../xxxx/xxxx1.txt") Set f2=fso.GetFile(Server.Mappath("../xxxx/xxxx2.txt")) 'リネーム f2.Name="xxxx.txt" %>

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

使用スクリプトはVBScriptだとして Option Explicit Dim str, regPattern, repStr, result str="ハイパーリンクテキスト" '元の文字列 repStr="-" 'マッチした部分を置き換える文字列 Set regPattern = new RegExp regPattern.Pattern="ー" '置き換えに該当する文字列のパターン regPattern.Global = True result = regPattern.Replace( str, repStr) のように書きます。 サンプルだと "ハイパーリンクテキスト"→"ハイパ-リンクテキスト" になります。

satosai
質問者

補足

同じファイルに上書きするにはどうしたらいいんでしょうか?

関連するQ&A

専門家に質問してみよう