2つのテキストファイル比較

機能概要

本ソフトは、2つのテキストファイルを比較して、その差分を表示します。

テキスト差分ライブラリ(C++用非公開版)を使用しています。
シンプルなものですが、基本的な差分を作成できます。

特徴

主な機能

制限事項

使用例

アーカイブを展開したら、 run_d001.batを実行して下さい。
すると、test_d001.txt とtest_d002.txtを比較して、test_out.txtというファイルが作成されます。

以下にファイルの内容をしまします。

test_d001.txtの内容
0000000000_001
0000000000_002
0000000000_003
0000000000_004
0000000000_005
0000000000_006
0000000000_007
0000000000_008
0000000000_009
0000000000_010

0000000000_011
0000000000_012
0000000000_013
0000000000_015
0000000000_016
0000000000_017
0000000000_018
0000000000_019
0000000000_020

0000000000_021

0000000000_022
0000000000_023
0000000000_024
0000000000_025
0000000000_026
0000000000_027
0000000000_028

0000000000_029

0000000000_030
0000000000_031
0000000000_032

0000000000_033
0000000000_034
0000000000_035
0000000000_036

0000000000_037
0000000000_038
0000000000_039
0000000000_040
test_d002.txtの内容
0000000000_001
0000000000_002
0000000000_003
0000000000_004
0000000000_005
0000000000_006
0000000001_007
0000000000_008
0000000000_009
0000000000_010

0000000000_011
0000000000_012
0000000000_013
0000000001_014
0000000000_015
0000000000_016
0000000000_017
0000000000_018
0000000000_019
0000000000_020



0000000000_030
0000000000_031
0000000000_032

0000000000_033
0000000000_034
0000000000_035
0000000000_036

0000000000_037
0000000000_038
0000000000_039
0000000000_040
test_out.txtの内容
d7 <,DEL,0000000000_007
a7 >,ADD,0000000001_007
a15 >,ADD,0000000001_014
d22 <,DEL,0000000000_021
d23 <,DEL,
d24 <,DEL,0000000000_022
d25 <,DEL,0000000000_023
d26 <,DEL,0000000000_024
d27 <,DEL,0000000000_025
d28 <,DEL,0000000000_026
d29 <,DEL,0000000000_027
d30 <,DEL,0000000000_028
d31 <,DEL,
d32 <,DEL,0000000000_029
d33 <,DEL,
a23 >,ADD,
a24 >,ADD,

多くの機能はありませんが、上記のように差分情報を出力することができます。

また、このソフトが気に入って、さらにもう少しの動作を期待する場合は、
テキスト差分ライブラリ(YsTxBLIB)、を使用してみるのもいいかと思います。

参考までに、このアプリケーションのソースの一部を示します。

ここで使用している、テキスト差分ライブラリ(C++用非公開版)が非公開の理由は、
クラスライブラリは、コンパイラーに依存するので、配布が複雑になるのを避けるためです。

カスタマイズ対応であれば、配布するのは可能だと思います。。

YsTxCDiff.exeの差分処理のソース(抜粋)
//ファイル配列
vector < string > srcfl_ary;           // 比較元配列(source)
vector < string > dstfl_ary;           // 比較先配列(dist)
vector < vector < string > > dfList2;  // 比較結果配列
vector < string > fmtList;             // 書式化配列

TxDiff *pTdiff;                        // TxDiff クラス

pTdiff = new TxDiff;         // TxDiff クラス生成
pTdiff->Open(DEF_DIF_DIF);   // TxDiffクラスオープン DEF_DIF_DIF=差分を生成
//差分出力モード 差分(追加/削除/変更)

// ソースファイルを配列に読み読む
pTdiff->ReadFile(szSrcFname, &srcfl_ary); 
// ディストファイルを配列に読み読む
 pTdiff->ReadFile(szDstFname, &dstfl_ary); 

// 差分情報作成
dfList2 = pTdiff->GetDiffStr(&srcfl_ary, &dstfl_ary);
long list_len = dfList2.size(); //配列数

// 差分情報書式化
fmtList = pTdiff->FmtDiffList(DEF_DIF_FMT_1, &dfList2); //DEF_DIF_FMT_1=オリジナル形式
long fmt_len = fmtList.size(); //配列数

// 配列の内容を出力ファイルに書き込む
pTdiff->WriteFile(szOutFname, &fmtList); 

pTdiff->Close();  // TxDiff クラスクローズ
delete pTdiff;    // TxDiff クラス消滅