質問: vbscriptにて、テキストファイルaの中身を、テキストファイルbに行を指定して追加書きしたい 以下のように記述されたc:\tmp\test.txtの3行目に、 test.txt######################ここから test1 test2 test3 test4 test5 ##############################ここまで 以下のように記述されたc:\tmp\insert.txtの中身全てを追加書きして、 insert.txt####################ここから insert1 insert2 insert3 insert4 insert5 #############################ここまで c:\tmp\test.txtが以下のような結果になるvbscriptを作成したいです。 test.txt#####################ここから test1 test2 insert1 insert2 insert3 insert4 insert5 test3 test4 test5 #############################ここまで 色々調べたのですがどうしても上手くいきません。 もし上記結果が得られる方法がありましたらご教授ください。
回答: いくつか方法があります。 方法1:読み取りファイルを先に複製 1. test.txt を複製しtest.txt.tmpを作る 2. test.txt.temp と insert.txt を読み取りモードで開く 3. test.txt を書き込み(上書き)モードで作成 4. test.txt に test.txt.tempから2行分読み取って書き込み 5. inser.txt から全行読み取って書き込み 6. test.txt.temp の残りの行を読み取って書き込み 7. test.txt.temp を削除 この方法は、test.txtの作成日時をそのままに更新日時だけが変わります。 方法2:一旦一時ファイルに書き出してリネーム 1. test.txt と insert.txt を読み取りモードで開く 2. test.txt.tmpを書き込みモードで開く 3. test.txt から2行、inser.txtから全行、test.txtの残りの順でtest.txt.tmpへ書き込む 4. test.txt を削除し、test.txt.tmpをtest.txtへリネーム この方法だとファイルの作成日時も新しくなります。 方法3:test.txtの中身をすべて読み込んでおく 1. test.txtを開き、全行を読み込んでおく(改行でsplitした文字列配列として) 2. inser.txtを読み取りモードで開く 3. test.txtを上書きモードで開く 4. test.txtに文字列配列から2行分、insert.txtの全行、文字列配列の残りの順で書き込む 作業用のファイルを複製したり削除したりしません。 どの方法で試しているのか、コードのどの部分がうまくいかないのかも示していただければより詳しく回答できます。