dポイントプレゼントキャンペーン実施中!

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

A 回答 (3件)

#2の補足について


>書き込みできません。というエラーがでます
deleteFileする時に、ファイルが閉じられていないのが原因です。
Wendの後の行に
data.Close
data2.Close
を記入してファイルをクローズして下さい。
これで、ちゃんと動作するようになります。

ちなみに、
Data2.Write(Line)
Data2.Write chr(13) & chr(10)

Data2.Writeline(Line)
で同じ意味です。
テンポラリファイル名は
tempFileName = Fso.GetTempName
でファイル名が作れます。(実際にファイルが作られるのではないです、名前だけ)
    • good
    • 0

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


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

この回答への補足

すいません。どうもうまくいきません。書き込みできません。というエラーがでます。どこがいけないのでしょうか?おわかりになりますか?
<%

'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"

%>

補足日時:2004/10/06 16:44
    • good
    • 0

使用スクリプトはVBScriptだとして


Option Explicit
Dim str, regPattern, repStr, result

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

この回答への補足

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

補足日時:2004/10/06 15:27
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!