- 締切済み
batやvbsでテキストファイルの何行目に指定の文字を追記する方法
現在、下記内容のファイル(test.txt)指定した行に指定文字を追記できる方法を探しております。 【test.txt内容】 [test1] :::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::: [test2] [test4] :::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::: [test5] :::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::: end 【追記したい内容】 test.txtの"[test2]"行の下の行に以下の文字を追記したいです。 [test3] :::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::: 指定行に追記するというコマンド自体はないと思い、batやwshの本などを読んではいるのですがなかなか良い考えが浮かびません。 ご教示の程よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- junkUser
- ベストアンサー率56% (218/384)
前提条件 発見目標は [test#] で固定か? 実際には文字の長さが違う可能性は? ini ファイルだったら、最下行に追加すればいいのですが。 --- Option Explicit Const LOADFILE = "test1.txt" Const TARGET = "[test2]" Const ForReading = 1 Const ForWriting = 2 Dim FSO, fr, fw, line, rf Dim wp Set FSO = CreateObject("Scripting.FileSystemObject") Set fr = FSO.OpenTextFile(LOADFILE, ForReading) Set fw = FSO.OpenTextFile(LOADFILE & ".tmp", ForWriting, True) wp = 0 Do Until fr.AtEndOfLine line = fr.ReadLine If line = TARGET Then If wp = 0 Then wp = 1 ElseIf Left(line, 1) = "[" And wp = 1 Then fw.WriteLine "[test3]" fw.WriteLine "::::::::::::::::::" fw.WriteLine "::::::::::::::::::" fw.WriteLine wp = 2 End If fw.WriteLine line Loop fw.Close fr.Close FSO.DeleteFile LOADFILE FSO.MoveFile LOADFILE & ".tmp", LOADFILE
私の場合はC,C++使用なので簡単にできてしまいます。 考え方としては、test.txtを文字列リストとして扱えばいいでしょう。 > 【追記したい内容】 test.txtの"[test2]"行の下の行に以下の文字を追記したいです。 私なら"[test4]"の直前行に文字列を追加する、という考えで行ないます。 「"[test2]"行の下の行」という考え方では[test2]セクションが何らかの文字列を含む場合に困ったことになりませんか?。