人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

特定のテキストファイルを開き、特定の行を追加するVBScriptの作成を考えております。

詳細はあるテキストファイルを行単位で読み込みを行い、特定の行を追加するVBScriptの作成を
考えておりますが、追加する特定の行の行頭部分が既に存在した場合は、行の追加をしないような仕様としたいです。

当仕様のVBScriptについてサンプルを作成いただけないでしょか
または作成のヒントを頂けると幸いです。

・詳細

追加したい特定の行:「TEST:テストです。」
追加する特定の行の行頭:「TEST:」※行頭

●質問者: gocnia3
●カテゴリ:コンピュータ インターネット
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● oil999
●500ポイント ベストアンサー

詳細なコメントをありがとうございます。
修正したVBScriptを以下に回答しますので、お試しください。

  1. 特定のテキストファイル→変数sourに代入してください。
  2. 追加した結果のテキストファイル名→変数destに代入してください。このプログラムでは"hoge.txt"を読み込んで、文字列を追加した結果を"hoge.txt.txt"に書き出すようにしています。
  3. 追加する特定の行の行頭は、正規表現という方法で検索しており、変数patに代入しています。

Option Explicit

Dim sour, dest, buf
Dim pat, str

sour = "hoge.txt"  '読み込むテキストファイル
dest = sour & ".txt"  '出力テキストファイル"
pat = "^TEST:"  '行頭パターン
str = "TEST:テストです。"  '追加文字列

'正規表現パターンの設定
Dim re
Set re = new RegExp
re.IgnoreCase = True
re.Global = True
re.pattern = pat

Dim fs, fr, fw
Set fs = CreateObject("Scripting.FileSystemObject")
Set fr = fs.OpenTextFile(sour)
Set fw = fs.CreateTextFile(dest)

Dim flag
flag = True  '行追加の有無フラグ

Do Until fr.AtEndOfLine
 buf = fr.ReadLine
 If (re.Test(buf)) Then flag = False
 fw.WriteLine(buf)
Loop
If Flag Then fw.WriteLine(str)

Set re = Nothing
Set fw = Nothing
Set fr = Nothing
Set fs = Nothing

gocnia3さんのコメント
ご回答ありがとうございます。 >1.詳細について確認です。たとえば「TEST:テストです。」という行があったらそのままにして、「TEST:hoge」のような行があったら「TEST:テストです。」に置き換えるということでよろしいでしょうか? 少し違います。 「TEST:hoge」のような行があったら「TEST:テストです。」は追加しないというものです。 行の中に「TEST:」があったら追加しないというものです。 申し訳ございませんが、さらに以下2点についても実装可能でしょうか ・複数のパターンマッチ(「TEST:」がなかったら「TEST:テストです。」を追加する or 「aaaa:」がなかったら「aaaa:テストです。」を追加する) ・パターン条件の条件 (A)aaa(B)aaa(B) (A)…行頭 (B)…半角/全角スペースまたはタブの1文字以上の繰り返し

oil999さんのコメント
変換ルールは以下のような形でしょうか? お知らせください。 ---------------- あいうえお かきくけこ TEST:hoge さしすせそ ---------------- ↓変換 ---------------- あいうえお TEST:テストです。 かきくけこ TEST:テストです。 TEST:hoge さしすせそ TEST:テストです。 ----------------

gocnia3さんのコメント
少し違います。 1回でも「TEST:」から始まる行が存在した場合は、「TEST:テストです。」は追加しません。 逆に存在しない場合はテキストファイルの末尾に「TEST:テストです。」を追加します。 例をいくつか ■(1)変化なし ---------------- あいうえお かきくけこ TEST:hoge さしすせそ ---------------- ↓変換 ---------------- あいうえお かきくけこ TEST:hoge さしすせそ ---------------- ■(2)追加あり ---------------- あいうえお かきくけこ さしすせそ ---------------- ↓変換 ---------------- あいうえお かきくけこ さしすせそ TEST:テストです。 ---------------- ■(3)変化なし(「TEST:」が二つあっても変化なし) ---------------- あいうえお TTEST:hoge BEST:hoge TEST:hoge かきくけこ TEST:aaaaaaaa さしすせそ ---------------- ↓変換 ---------------- あいうえお TTEST:hoge BEST:hoge TEST:hoge かきくけこ TEST:aaaaaaaa さしすせそ ---------------- ■(4)追加あり ---------------- あいうえお TTEST:hoge BEST:hoge かきくけこ さしすせそ ---------------- ↓変換 ---------------- あいうえお TTEST:hoge BEST:hoge かきくけこ さしすせそ TEST:テストです。 ----------------

oil999さんのコメント
詳細なコメントをありがとうございます。 回答欄のVBScriptを修正しましたので、お試しください。

gocnia3さんのコメント
ありがとうございます。 目的のものが作成できました。 ありがとうございました。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ