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

文字列の置換についての質問です。
以下のような記述のhtmlファイルが数百あります。

==
【山田太郎の日記】
こんにちは。私の名前は○○です。
==
という内容の「yamadatarou.html」

==
【佐藤花子の日記】
はじめまして。私の名前は○○です。
==
という内容の「satouhanako.html」などなど。

各ファイルの○○の部分を【××の日記】の××に置換して
「yamadatarou.html」は「私の名前は山田太郎です。」に、
「satouhanako.html」は「私の名前は佐藤花子です。」
という結果にしたいのですが、数百のファイルを一括で置換するにはどのような方法があるでしょうか?

一括置換ソフトでワイルドカードを使った置換をしようと思ったのですが、「こんにちは。」「はじめまして。」の部分がファイルごとにすべて違うため、できなそうです。

ご回答よろしくお願いしますm(_ _)m

●質問者: boku-harold
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:HTML こんにちは はじめまして ソフト ファイル
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● ku__ra__ge
●100ポイント ベストアンサー

以下の内容を「conv.js」というファイル名で保存して、変換したいhtmlファイルが置いてあるフォルダに「conv.js」を移動させてからダブルクリックしてみてください。

うまく動作すれば「おしまい」というメッセージが出てきて、自動的に作成された「convert」というフォルダ内に変換した結果のファイルが保存されます。

var fso = new ActiveXObject("Scripting.FileSystemObject");
fso.CreateFolder("./convert");

var fe = new Enumerator(fso.GetFolder("./").Files);

for (; !fe.atEnd(); fe.moveNext()) {
var f = fe.item();

if (!f.Name.match(/\.html$/)) continue;

var ts = fso.OpenTextFile(f.Path);
var text = ts.ReadAll();
ts.Close();

text.match(/【(.*?)の日記】/);
var name = RegExp.$1;
var convText = text.replace(/私の名前は.*?です。/g, "私の名前は" + name + "です。");

var ts = fso.OpenTextFile("./convert/" + f.Name, 2, true);
ts.Write(convText);
ts.Close();
}

WScript.Echo("おしまい");
◎質問者からの返答

ありがとうございます。

ご回答いただいたとおりやってみたところ、

「おしまい」というメッセージとともに「covert」フォルダにファイルが生成されましたが、

置換は行われず、なぜか以下のように日本語の大部分が文字化けしてしまいました。

--

【山田太郎�E日記、E

こんにちは。私�E名前は○○です、E

--

何か原因はわかりますでしょうか?

ちなみにMacOS Xでは動作せず、Win 7環境では動作しました。

実際のファイルは上記の文章だけではなく、もっと長い文章のファイルです。

関連質問


●質問をもっと探す●



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