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

javascript の正規表現でファイルを置き換えするプログラムを書いたんですが現在のままでは1ファイルづつしか置き換えができません。

このプログラムをフォルダ単位(複数ファイル)で使えないでしょうか?

よろしくお願いします。m(__)m

*コードをいただければ最高ですが、
参考になるページでも教えていただければ助かります。


●質問者: tontonpokopoko
●カテゴリ:ウェブ制作
✍キーワード:JavaScript コード ファイル フォルダ プログラム
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● Cherenkov
●0ポイント

Grep and Replace(一括置換) の使い方

このソフトは試されましたか?

◎質問者からの返答

利用したことあると思います。現在は、ez-html を使っているのでフォルダ内の一括置き換えもできます。ただ望んでいるモバイルソースにするために、10回くらい置き換えを繰り返さないといけないんです。(ヘッダー部分、サイド部分、降った部分・・・)

もっと簡略化したいんですが、自力じゃこのあたりまでで・・。


2 ● TinqWill
●100ポイント

同時に複数条件を指定して置き換えを行えるソフト、ということで探したら、それらしきソフトが見つかりました。正規表現の使用も可能なようです。

http://www.sirmiles.com/

ご希望に沿わなかったら申し訳ありません。

◎質問者からの返答

コメントをありがとうございます。

このソフトでほぼ望んでいた動作ができました。

ばっちりです!


3 ● Cherenkov
●400ポイント ベストアンサー

WSHで書いてみました。ドラッグアンドドロップで直接ファイルの中身を書き換えます。

使い方は、

  1. replace.wsfのstrSet変数に[ [/置換前の正規表現/, '置換後の文字列'], [/置換前の正規表現/, '置換後の文字列'] ]のように複数の条件を書く。
  2. 置換したいファイルをreplace.wsfにドラッグアンドドロップする。

注意点


replace.wsfで保存。

<?xml version="1.0" encoding="Shift_JIS" standalone="yes" ?>
<package>
<job id="WordReplace">
<?job error="True" debug="True" ?>
<object id="objFs" progid="Scripting.FileSystemObject" />
<script language="JavaScript">
<![CDATA[
var strSet = [
 [/<!DOCTYPE HTML PUBLIC "-\/\/W3C\/\/DTD HTML 4\.01 Transitional\/\/EN\">[\s\S]*?<title>パソコン用/g, '<!DOCTYPE HTML PUBLIC "-//W3C//DTD Compact HTML 1.0 Draft//EN">\n<html>\n<head>\n<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">\n<meta name="Keywords" content="テスト">\n<title>モバイル用'],
 [/<div class="line1"><img src="\.\.\/\.\.\/image2\/hana2\.gif" alt="花" width="20" height="20\"><\/div>/g, '<hr size=1 width=100% align=center noshade color=#ff1493>']
];

var objArg=WScript.Arguments;
for(var i = 0; i < objArg.length; i++) {
 var strTmp = objFs.BuildPath (objFs.GetParentFolderName (WScript.ScriptFullName), objFs.GetTempName ());
 var objTs = objFs.OpenTextFile(objArg(i),1,false);
 var objTs2 = objFs.OpenTextFile(strTmp,2,true);
 do {
 var strLne = objTs.ReadLine();
 for (var j = 0; j<strSet.length; j++) {
 strLne = strLne.replace(strSet[j][0], strSet[j][1]);
 }
 objTs2.WriteLine(strLne);
 } while (!objTs.AtEndOfStream);
 objTs.Close();
 objTs2.Close();
 objFs.DeleteFile(objArg(i));
 objFs.MoveFile(strTmp,objArg(i));
}
]]>
</script>
</job>
</package>

テスト用ファイルをtest.htmlで保存。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">abc<title>パソコン用
<div class="line1"><img src="../../image2/hana2.gif" alt="花" width="20" height="20"></div>


結果:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD Compact HTML 1.0 Draft//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<meta name="Keywords" content="テスト">
<title>モバイル用
<hr size=1 width=100% align=center noshade color=#ff1493>

参考:

@IT:Windows TIPS -- Tips:複数ファイルの文字列置換をワンクリックで行なう

◎質問者からの返答

わざわざコードを書いていただきありがとうございます。

ただ拡張子をwsfにしてドラッグアンドドロップすると

「定義されているジョブがありません」

と私の環境(win vista)だとなってしまうのですが・・

関連質問


●質問をもっと探す●



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