■条件にあう回答には 500 pt ~ 1200 pt 程度■
「old」というフォルダに約150件のhtmlファイルがあります。同じ名前、同じ数のhtmlファイルが「new」というフォルダにもあります。「old」に含まれているhtmlファイルは古い内容です。「new」に含まれているhtmlファイルは新しい内容です。
以下の条件を満たす、両者の差分を確認する方法/ソフトを教えてください。
実現できそうなソフトが複数ある場合は両者の違いや利点を教えてください。
■必須条件■
1.「old」と「new」の両フォルダと拡張子(html)を指定するだけでファイル名を基に150のペアを自動で作ってくれること。
2.差分個所を色分けして表示してくれること。
3.全ファイル(*注1)の差分個所のみを一括でエクスポートできること、その際csvなどで「ファイル名」、「oldの内容」、「newの内容」を一列にならべて確認できること(*注2)。
参考情報と(*注)についての情報をコメント欄に書きます。
質問はコメント欄にどうぞ。
コメント(14件)
時間がないので、何かを150回指定しなければならないような操作はできません。なるべく手作業が少ない方法でお願いします。
(*注1) 150件すべてでなくても構いませんが、50件、100件単位など数回の作業でできることが望ましいです。
(*注2) csv でなくても構いません。エクスポートした後に、newの内容やoldの内容でソートしたいので、ソート後でも元のファイル名をすぐに確認できるようにしたいので、エクスポートするデータは「ファイル名」、「oldの内容」、「newの内容」がセットになっている必要があります。(htmlファイルペアごとに別々のcsvになってしまうのは基本的にはNGですが、それらを自動的にまとめてくれる方法やプログラムもセットで教えてくれればOKです)
差分はほとんどありません。newとoldのタグ構成はほぼ同じです。使われているタグの種類や数もほぼ同じです。おそらくですが論理行自体はnewとoldで同じだと思います。差分を検出しやすい内容だと思います。
すばらしいソフトであれば有料でも構いませんが、出せても3000円までです。
その他質問があればコメント欄にお願いします。
今回、一括エクスポートは必要な機能です。
ちなみにこのあたりのソフトはエクセル形式で差分を出力できるようですね
http://www.vector.co.jp/soft/winnt/util/se457316.html
http://www.vector.co.jp/soft/win95/util/se148178.html
ファイルペアの1行目から比較して異なる場合はファイル名とともに csv として出力すればいいかもしんないと思いついた。
普通の差分比較ソフトと組み合わせれば条件は満たされるかも。
と、コメントしてみるテスト。
差異がある部分が複数行の場合もあるので、一覧形式というのはなかなか難しそうです。
比較するファイルはなにか決まったフォーマットの羅列になっているようなファイルなのでしょうか?
開くときにフィルタに*.htmlを指定すればhtmlファイルのみ抽出するし、
差分の有無だけは[ツール]-[レポートの作成]でファイル出力出来ますし、
一括エクスポートは150件htmlを選んでから[ツール]-[パッチの生成]で出来ます
でも、一行に出すのは私の知っている限りではありませんね
WinMerge というソフトがどのようなものかは知りません。
先ほどざっと概要を見てみました。
時間が無くてWinMergeについて詳しく確認できないのですが次のようなことを実現したいです。
hogehgoe.html の内容が
old:今日は3月1日です。
new:今日は3月2日です。
となっている場合、
「hogehgoe.html, 今日は3月1日です。, 今日は3月2日です。」
のようなデータが出力されてほしいです。タブ区切りでもOKです。
(「1日, 2日」という差分個所のみの出力ではなく)
この処理を150ファイル同時に行って、出力先が同じファイルになるか、簡単な方法で1つにまとめられるというのが条件です。
たぶんですけど、oldもnewも論理行の数は同じだと思います。
明日か明後日まで一時中断します。
再開する場合はコメントに書き込みます。
(そのままキャンセルの可能性もあります)
自己解決した訳ではありませんので
出てきた日付をエクセルにて比較 IFでもVlookupでも駆使して。
ここから良くわからないんですが、
差分=NEW-OLDであまったファイルでしょうか?仮にそれをαとしておきます。
エクセルで「copy α1.html folder」の形になるように文字列結合。
それをテキストファイルにペーストしてbatにする。
コレでできそうだけどなぁ。
ファイル名で紐付けして、日付の違いだけがわかればよいって事ですよね。
上記エクセルだけでできそうですよ。
ファイル名は伏せさせてください(つд´)
A 2009/1/17 2009/2/25
B 2009/1/17 2009/2/25
C 2009/1/17 2009/2/25
D 2009/1/17 2009/2/25
E 2009/1/17 2009/2/25
F 2009/1/17 2009/2/25
G 2009/1/17 2009/2/25
H 2009/1/17 2009/2/25
I 2009/1/17 2009/2/25
J 2009/1/17 2009/2/25
とりあえず同じ形式のデータが大量にあるフォルダコピーして片方の日付を変えてを比較してみました。
以下引用
~~~~~~~~~~~~
hogehgoe.html の内容が
old:今日は3月1日です。
new:今日は3月2日です。
となっている場合、
~~~~~~~~~~~
ここまで
この場合の内容ってHTML内のテキストを意味しますか?
そうであった場合はごめんなさい。
上記のコメもあわせて、すごく勘違いしてました。
コメントありがとうございます。
「差分はほとんどない」と書きましたが、これの意味するところを具体的に以下に示します:
newとoldのファイルに含まれる各htmlファイルはすべてのペアにおいて差分があります。ただし各ファイルに含まれている差分はほんの一部です。
つまり、日付を確認する必要はありません。すべてのファイルに少なくとも1行は更新個所が存在するので、すべてのファイルを一様に比較することが必要です。
>差分=NEW-OLDであまったファイルでしょうか?
いいえ。違います。
すでにコメントとして書いていますが以下に引用します:
>old:今日は3月1日です。
>new:今日は3月2日です。
>となっている場合、
>「hogehgoe.html, 今日は3月1日です。, 今日は3月2日です。」
>のようなデータが出力されてほしいです。タブ区切りでもOKです。
>(「1日, 2日」という差分個所のみの出力ではなく)
必要な作業は次のようなものになると思います:
エクセルVBAでoldとnewにある150ファイルペアを順番に開いて、各論理行を1行目からEOFまで比較して、oldとnewの論理行が同一のものでなければ、「ファイル名、oldのn行目のテキスト、newのn行目のテキスト」をタブやカンマ区切りで出力する
なんだか自己解決のムードが漂ってきました。
とりあえず明日か明後日までは回答受付を一時中断させていただきます。
問題は、違いを1行で出力する機能ですね。
dev_zer0さんも書かれていましたが、1行にするツールは無さそうです。
WinMergeか、Windows標準のFCで違いをテキスト出力した後で、ストリーム変換処理をしてあげれば、論理上は問題なく1行にできると思います。
でも、n行不一致/追加/削除に全部対応するとなると、結構プログラムは工夫する必要がありそうです。
作るかどうか踏ん切りがつかないでいます。
★FCでの出力
C:\old> fc *.html ..\new\*.html
ファイル hogehgoe.html と ..\new\hogehgoe.html を比較しています
***** hogehgoe.html
日付:
今日は3月1日です。
<B>ほげのページ</B>
***** ..\new\hogehgoe.html
日付:
今日は3月2日です。
<B>ほげのページ</B>
*****
***** hogehgoe.html
日付:
<B>ほげのページ</B>
***** ..\new\hogehgoe.html
日付:
今日は3月2日です。
<B>ほげのページ</B>
*****
ファイル hoge2.html と ..\new\hoge2.html を比較しています
***** hoge2.html
***** ..\new\hoge2.html
日付:
*****
この質問は当分回答受付を中断しようと思います。
いろいろと考えていただいたのに申し訳ありません。
代わりに
http://q.hatena.ne.jp/1236087719
という質問を立てました。こちらのがやや簡単な内容かもしれません。
採用回答は、500pt~で早めにいただけた場合は最大で1000ptまで上げます。