アプリ版:「スタンプのみでお礼する」機能のリリースについて

こんばんわ
VBSについて質問です。
テキストファイルを開いて、文字列を追加するスクリプトを作成したいのですが、
以下のようなプログラムであれば、行の一番下に文字を追加できると思います。
########ここから
Dim objFS,objText,objFile

Set objFS = CreateObject("Scripting.FileSystemObject")
Set objFile = objFS.GetFile("C:\test\vbs\test.txt")
Set objText = objFile.OpenAsTextStream(8,-2)
objText.WriteLine("新しい行")

Set objFILE = Nothing
Set objText = Nothing
############ここまで

しかし今やりたいのは分の途中に文字をいれたい。
たとえばテキストファイルが
A
B
C
D

というファイルだったら、
"B"を検索して、Bの下に”新しい行”という文字列を追加したいです。

いろいろ調べましたがどうもうまくいきません。
わかる方ご教授願います。

A 回答 (1件)

VBScriptで用意されているファイル処理は


読み込み、書き込み、末尾への追加の3種類です
途中の書き換えは準備されていないのでテンポラリーファイルなどを使って希望の処理を行う方向でしょう

Dim objFS,objText,objFile
Dim objTemp, ss, flag

Set objFS = CreateObject("Scripting.FileSystemObject")
Set objFile = objFS.GetFile("C:\test\vbs\test.txt")
Set objText = objFile.OpenAsTextStream(1,-2)
Set objTemp = objFS.CreateTextFile("C:\Test\vbs\temp.txt",true)

' 書き換え処理をしたかどうかのフラグ
flag = false

do until objText.AtEndOfStream
  ss = objFile.ReadLine
  objTemp.WriteLine( ss )
  if flag = false then
    if ss = "B" then
      flag = True
      objTemp.WriteLine("新しい行")
    end if
  end if
loop
objText.Close
objTemp.Close

if flag then
  '
  ss = objFile.Name
  ' 元が不要なら Deleteメソッドを使用
  objFile.Move( "old_" & ss )
  Set objFile = objFS.GetFile("C:\test\vbs\temp.txt")
  objFile.Move( ss )
end if

Set objFILE = Nothing
Set objText = Nothing
Set objTemp = Nothing
    • good
    • 0
この回答へのお礼

なるほど。
普通にはできず、
そんな技を使うんですね。

大変参考になりました。ありがとうございます。

お礼日時:2009/05/03 22:41

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

このQ&Aを見た人はこんなQ&Aも見ています