以下のような記述のhtmlファイルが数百あります。
==
【山田太郎の日記】
こんにちは。私の名前は○○です。
==
という内容の「yamadatarou.html」
==
【佐藤花子の日記】
はじめまして。私の名前は○○です。
==
という内容の「satouhanako.html」などなど。
各ファイルの○○の部分を【××の日記】の××に置換して
「yamadatarou.html」は「私の名前は山田太郎です。」に、
「satouhanako.html」は「私の名前は佐藤花子です。」
という結果にしたいのですが、数百のファイルを一括で置換するにはどのような方法があるでしょうか?
一括置換ソフトでワイルドカードを使った置換をしようと思ったのですが、「こんにちは。」「はじめまして。」の部分がファイルごとにすべて違うため、できなそうです。
ご回答よろしくお願いしますm(_ _)m
以下の内容を「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("おしまい");
rubyやperlはまったくわかりません。。。
また文字化けの原因は、テキストファイルの文字コードがshift-jisではないことが原因だと思われます。
文字コード一括変換ソフトで、いったん文字コードをshift-jisに変換してから処理することで文字化けしなくなると思います。
http://www.kashim.com/kanjitranslator/index.html
Shift-jisに変換したところ、うまく動作しました!
ありがとうございました。