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

2500Pで一括で大量にあるhtmlファイル内にある共通の文字をファイル名に変換するソフトを作るれないでしょうか。

ABC.html (<title>XXX</title>)→ A.html(<title>ABC</title>)
DEF.html (<title>XXX</title>)→ A.html(<title>DEF</title>)

何がしたいかというとhttp://q.hatena.ne.jp/1134551356 にある質問のちょうど逆で
htmlファイル内にあるタイトルタグをファイル名に書き換えたいのです。


共通の文字(XXX)を変換の際に指定できるように(つまり応用が効くように)作成してくれた方には2500P
タイトルタグの変換のみの場合は2000Pのお礼をします。
一番使いやすいソフトを作成してくれた人にお礼をさせて下さい。

宜しくお願い致します。



●質問者: wano3
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

質問者から

動作環境はwindows7 64bit です。よろしくお願いします。
書きミスしていました

ABC.html (<title>XXX</title>)→ A.html(<title>ABC</title>)
DEF.html (<title>XXX</title>)→ A.html(<title>DEF</title>)


ABC.html (<title>XXX</title>)→ ABC.html(<title>ABC</title>)
DEF.html (<title>XXX</title>)→ DEF.html(<title>DEF</title>)

またABC.html のファイル名はローマ字ではなく日本語です。


1 ● t_yamo
●0ポイント

どちらかというと回答というより自分の興味で書いてみました。

Unix系なら大抵動くかなと。

【!注意!】ファイルを丸ごと書き換えてしまいますので、実際やるときは安全なところで実験してから、バックアップをとったうえで実行してください。

@下ごしらえ

対象ファイル群がある一番上のフォルダで

vi ./convX

として以下を作成。

#!/bin/sh

fname=`basename $3 $2`

sed -i "s/$1/$fname/g" $3

それの権限を変更。

chmod 755 ./convX

@変換実行

*.htmlファイル群内の文字列XXXをファイル名から.htmlを抜いた部分で置換する場合は以下。複数個XXXがあればそれら全部置換対象(XXXXといった感じの場合は先頭の合致する箇所が対象)。

find . -name "*.html" -exec ./convX XXX .html {} \;


wano3さんのコメント
すみません、プログラムの知識が全くないため全くわかりません・・・。 でも考えて下さりありがとうございます。

2 ● gong1971
●358ポイント

VBScriptで作成しました。

下記のコード部分をコピーし、メモ帳を開いて貼り付け、
対象となるHTMLが保存されたフォルダに「HTML.vbs」という名前で保存します。

HTML.vbsをダブルクリックすると、フォルダ内のHTMLファイルを変換します。
変換が終わると「変換完了」と表示されます。

※ファイルを書き換える為、HTMLファイルは必ずバックアップを取ってください。
※文字のエンコードなどで、うまくいかない事があるかもしれません。
不明な点は状況をお知らせください。

Set objWshShell = WScript.CreateObject("WScript.Shell")
Set objFS = WScript.CreateObject("Scripting.FileSystemObject")

Set objFList = objFS.GetFolder(objWshShell.CurrentDirectory)

For Each objFile In objFList.Files
If Right(objFile.Name, 5) = ".html" Then
Set oTF = objFS.OpenTextFile(objFile.Name)
tmp = oTF.ReadAll
oTF.Close

tmp = replace(tmp,"<title>XXX</title>","<title>" & Left(objFile.Name,Len(objFile.Name) - 5) & "</title>")
Set oTF = objFS.OpenTextFile(objFile.Name, 2)
oTF.Write tmp
oTF.Close
End If
Next

MdgBox "変換完了"

gong1971さんのコメント
ごめんなさい。最終行にスペルミスがありました。 下記の通り、修正してください。 誤:MdgBox "変換完了" 正:MsgBox "変換完了" なお、12行目の XXX は、書き換える事が可能です。 ある程度、決まっているようであれば、書き換えて使われた方が便利かと思います。 そうではなく、実行する度に入力した方がよろしければ、 下記のコードで実行可能です。実行時に入力のダイアログが表示されます。 >> Set objWshShell = WScript.CreateObject("WScript.Shell") Set objFS = WScript.CreateObject("Scripting.FileSystemObject") Set objFList = objFS.GetFolder(objWshShell.CurrentDirectory) tmpWd = Inputbox("検索する文字列を入力してください") For Each objFile In objFList.Files If Right(objFile.Name, 5) = ".html" Then Set oTF = objFS.OpenTextFile(objFile.Name) tmp = oTF.ReadAll oTF.Close tmp = replace(tmp,"<title>" & tmpWd & "</title>","<title>" & Left(objFile.Name,Len(objFile.Name) - 5) & "</title>") Set oTF = objFS.OpenTextFile(objFile.Name, 2) oTF.Write tmp oTF.Close End If Next MsgBox "処理完了" << ※何回か修正しました。メール受信の設定をされていたら、すみません。

gong1971さんのコメント
もう一つ補足。 WindowsXP環境で作成、検証しました。 Windows7 64bitで、動かなかったらゴメンなさい。

wano3さんのコメント
できました、ありがとうございます。 後出しですみませんが ちなみにこれは 1、共通の文字(XXXAAA)を一部一致でAAAの部分だけを検索してAAAの部分を名前に変えることはできますか? 2、<meta name="Description" content="XXXX">や<meta name="Keywords" content="XXXX"> にも対応させることは可能ですか? また、http://q.hatena.ne.jp/1134551356のNo7さんのソフトのようにドラッグ&ドロップ操作でできれば最高なんですが・・・。 でも操作はうまくいったのでお礼はさせていただきます!ありがとうございます!

gong1971さんのコメント
>> 1、共通の文字(XXXAAA)を一部一致でAAAの部分だけを検索してAAAの部分を名前に変えることはできますか? 2、<meta name="Description" content="XXXX">や<meta name="Keywords" content="XXXX"> << 1が分かりませんでした。具体例を提示して貰えると助かります。 また、2ですが、html中のXXXXを全て置換でも大丈夫ですか? 特定の記述(<title…だとか、<meta …だとか)のXXXXを置換という事ですか? 前者なら簡単に修正可能です。後者でも対応可能です。 後者の場合、title 1パターン、meta 2パターンの計3パターンで全てですか? 当初の質問文のtitleではXXX(3文字)、追加のmetaではXXXX(4文字)でしたが、 これらは同じ文字列という事でよろしいですか? ドラッグ&ドロップについては、難しいかもしれませんが検討してみます。 参考までに処理するファイル数は多くてどれくらいですか?(大体で構いません) 最後に、XXXの部分は入力のダイアログを表示する方が良いですか? それとも最初の回答のように、コードに書いちゃった方が良いですか? ちなみに、日曜、月曜の回答は難しいかもしれません。火曜には回答可能です。

wano3さんのコメント
いろいろ対応した頂き本当にありがとうございます。 1,2について具体例を書きます。 東通り.html ? <meta name="robots" content="index,follow"> <meta name="Description" content="大正地区平尾小学校の年間行事を示します"> <meta name="Keywords" content="平尾小学校の周辺"> <title>大正地区 - 平尾小学校</title> <h1>平尾小学校周辺の地図では????</h1> ? 中央北側通り.html ? <meta name="robots" content="index,follow"> <meta name="Description" content="大正地区平尾小学校の年間行事を示します"> <meta name="Keywords" content="平尾小学校の周辺"> <title>大正地区 - 平尾小学校</title> <h1>平尾小学校周辺の地図では????</h1> ? ここで置換文字を「平尾小学校」に指定しファイル名にしたいんです。 東通り.html ? <meta name="robots" content="index,follow"> <meta name="Description" content="大正地区東通りの年間行事を示します"> <meta name="Keywords" content="東通りの周辺"> <title>大正地区 - 東通り</title> <h1>東通り周辺の地図では????</h1> ? 中央北側通り.html ? <meta name="robots" content="index,follow"> <meta name="Description" content="大正地区中央北側通りの年間行事を示します"> <meta name="Keywords" content="中央北側通りの周辺"> <title>大正地区 - 中央北側通り</title> <h1>中央北側通り周辺の地図では????</h1> ? 一度に処理するファイルは最大でも300個くらいですが フォルダ別に大量にあるのでフォルダ内にVBSファイルを毎回入れて行うとかなり手間なものでドラッグ&ドロップ方式を希望しました。 よろしくお願いします。

gong1971さんのコメント
下記3点について、教えてください。 1.ドラッグ&ドロップですが、対象フォルダ1つをドラッグ&ドロップし、 そのフォルダ内のhtmlファイル全てを処理するという事でよろしいですか? 2.提示された例だと「平尾小学校」の部分は変換の際に指定との事ですが、 毎回入力するという事でよろしいですか? (あまり変わる事が無いようなら、コードに直接書いた方が楽かと思ったのですが。) 3.追加になった<meta…、<h1…の処理ですが、次の内、どれなら問題ないですか? (下記文中の「平尾小学校」の部分は2.の指示通りに変更可能です) >> a.html内の「平尾小学校」全てを置換。(本文中の「平尾小学校」も置換します) b.行頭の4文字が「<met」「<tit」「<h1>」の行では、「平尾小学校」を置換する。 c.ファイルの最初からn行目までの「平尾小学校」を置換する。 ※上記a.b.c.では問題がある場合、詳細な処理方法、条件をお知らせください。 内容によっては、対応出来ない事もあります。 元々の質問文に無かったので、ご了承ください。 <<

wano3さんのコメント
すみません!読み返してみたら間違えてました! 1:はい、そのようにしてただけるとありがたいです。 2:これはあまり変わることがないのでコードに書いてもいいのですが、希に変わることがあります。その際にコードの方で自分で修正できるやり方?など教えてもらえたらOKです。 3:aが理想ですが難しいようならbでお願いします。bの場合は「<met」「<tit」だけでお願いします(<h1>は必要ありません) いろいろ対応頂きありがとうございます。 質問分の内容が詳しく書いたなかったせいで手間をかけさせてしまいすみません。 当初この質問のために3000P購入しましたのでもしできあがりましたら全Pをお礼として使わせてください。(今回初の利用ですのでよくわからないのですが5%引かれるから2850P?) よろしくお願いします。

gong1971さんのコメント
修正中でしたが、質問を終了されたようなので、 補足分の回答も取り止めておきますね。 返信不要です。

wano3さんのコメント
すみません!作っていただいたソフトがうまくいって嬉しくて勢いでポイント配布してしまいました。 修正していただいていたみたいで不義理なことしてしまい申し訳ありません・・・ 今後は期限を決めてこのようなことがないようにします。 本当にすみませんでした。

3 ● Cherenkov
●0ポイント

GrepReplaceを使えばできると思います。
dHive::DH-APPLI - 株式会社ドリームハイブのアプリケーション配信サイト
コーディングやサイト修正時に便利すぎる一括置換ツールGrep Replace|SEOまとめ
D&Dで対象ディレクトリを指定できます。


Cherenkovさんのコメント
使い方はこれから調べます。

Cherenkovさんのコメント
あーでもファイル名を置換文字として設定できなさそうでした。 凡ミスすみません…。

質問者から

後出しですみません。もうちょっと詳しく書くと

1、「ABC.html内の文字(XXX - AAA)を一部一致でAAAの部分だけを検索してAAAの部分を名前(ABC)に変える.」
2、http://q.hatena.ne.jp/1134551356のNo7さんのソフトのようにドラッグ&ドロップ操作で置換できる。

この2つの機能をお願いします。
よろしくお願いします。



1-5件表示/6件
4.前の5件|次5件6.
関連質問

●質問をもっと探す●



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