以下に、本願の開示する比較プログラム、比較方法および情報処理装置の実施例を図面に基づいて詳細に説明する。なお、実施例によりこの発明が限定されるものではない。
[実施例に係る情報処理装置の構成]
図1は、実施例に係る情報処理装置の構成を示す機能ブロック図である。実施例に係る情報処理装置1は、2つのディレクトリ配下の複数のファイルを比較する際に、ファイル名の順に従ったソートルールにより2つのディレクトリ配下のファイルをそれぞれソートする。情報処理装置1は、2つのディレクトリ配下のファイルをそれぞれソートした結果、先頭のファイルから順に対応付け、対応付けたファイル同士を比較対象として比較処理を行う。かかる2つのディレクトリ配下の複数のファイルの比較は、例えば、システムリプレイスの場面において、現行の資産と新規の資産との比較検証をサポートする際に行われる。
図1に示すように、情報処理装置1は、制御部10および記憶部20を有する。
記憶部20は、例えばフラッシュメモリ(Flash Memory)やFRAM(登録商標)(Ferroelectric Random Access Memory)等の不揮発性の半導体メモリ素子等の記憶装置に対応する。記憶部20は、比較元ファイル群21、比較先ファイル群22、比較元ファイル名テーブル23、比較先ファイル名テーブル24および結果出力ファイル25を有する。
比較元ファイル群21は、比較元のディレクトリ配下の複数のファイルである。比較先ファイル群22は、比較先のディレクトリ配下の複数のファイルである。
比較元ファイル名テーブル23は、比較元のディレクトリ配下における複数のファイルのファイル名をそれぞれ比較先のディレクトリ配下におけるファイルとの比較結果とともに記憶する。なお、比較元ファイル名テーブル23は、後述するソートなし比較部14またはソートあり比較部15によって生成される。ここで、比較元ファイル名テーブル23のデータ構造について、図2を参照して説明する。
図2は、実施例に係る比較元ファイル名テーブルのデータ構造の一例を示す図である。図2に示すように、比較元ファイル名テーブル23は、No23a、比較元ファイル名23bおよび比較結果23cを対応付けて記憶する。No23aは、比較元ファイル名23bに対して一意に付けられる識別番号である。No23aは、例えば、1から順番にシーケンシャルに設定される。比較元ファイル名23bは、比較元のディレクトリ配下に存在する比較元ファイルのファイル名である。比較結果23cは、比較元ファイルと比較先ファイルとの比較結果を示す。比較結果23cには、例えば、差異がないことを示す「一致」、差異があることを示す「不一致」、比較対象のファイルがないことを示す「比較対象なし」が設定される。
図1に戻って、比較先ファイル名テーブル24は、比較先のディレクトリ配下における複数のファイルのファイル名をそれぞれ比較元のディレクトリ配下におけるファイルとの比較結果とともに記憶する。なお、比較先ファイル名テーブル24は、後述するソートなし比較部14またはソートあり比較部15によって生成される。ここで、比較先ファイル名テーブル24のデータ構造について、図3を参照して説明する。
図3は、実施例に係る比較先ファイル名テーブルのデータ構造の一例を示す図である。図3に示すように、比較先ファイル名テーブル24は、No24a、比較先ファイル名24bおよび比較結果24cを対応付けて記憶する。No24aは、比較先ファイル名24bに対して一意に付けられる識別番号である。No24aは、例えば、1から順番にシーケンシャルに設定される。比較先ファイル名24bは、比較先のディレクトリ配下に存在する比較先ファイルのファイル名である。比較結果24cは、比較先ファイルと比較元ファイルとの比較結果を示す。比較結果24cに設定される内容は、比較元ファイル名テーブル23の比較結果23cと同様であるので、その説明を省略する。
図1に戻って、結果出力ファイル25は、比較元のディレクトリおよび比較先のディレクトリ毎に、比較結果、比較ファイル数、不一致ファイル数および比較ファイル選択ルールを対応付けて記憶する。比較結果は、ディレクトリ内の複数のファイルにおけるトータルの比較結果のことをいう。比較ファイル数は、ディレクトリ内の比較処理により比較されたファイルの数のことをいう。不一致ファイル数は、ディレクトリ内の不一致となったファイルの数のことをいう。比較ファイル選択ルールは、比較元および比較先のそれぞれのディレクトリ内のファイル同士の突合せルールのことをいう。
ファイル同士の突合せルールには、一例として、ファイルをファイル名で昇順にソートした結果先頭のファイルから順に突き合わせるという「ファイル名昇順」、ファイルをファイル名で降順にソートした結果先頭のファイルから順に突き合わせるという「ファイル名降順」がある。また、比較ファイル選択ルールには、別の例として、ファイル名が一致したファイル同士を突き合わせるという「ファイル名一致」がある。なお、結果出力ファイル25の一例は、後述するものとする。
制御部10は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。そして、制御部10は、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの集積回路の電子回路に対応する。または、制御部10は、CPU(Central Processing Unit)やMPU(Micro Processing Unit)などの電子回路に対応する。さらに、制御部10は、入力部11、初期化部12、判定部13、ソートなし比較部14、ソートあり比較部15および結果出力部16を有する。なお、入力部11は、受付部の一例である。ソートあり比較部15は、比較部の一例である。結果出力部16は、出力部の一例である。
入力部11は、比較処理を行う対象の第一のディレクトリと第二のディレクトリとの指定に加えて、ファイル名の順に従ったソートルールを受け付ける。ソートルールには、ファイル同士の突合せルールの一例である「ファイル名昇順」、「ファイル名降順」がある。なお、ソートルールが省略された場合には、ファイル同士の突合せルールは、デフォルトとして「ファイル名一致」であるものとする。
例えば、入力部11は、比較コマンドの入力を受け付ける。比較コマンドは、比較コマンド名のほか、引数として、比較元ディレクトリ名、比較先ディレクトリ名を含む。さらに結果出力先を含んでもよい。比較コマンド名は、あらかじめ定められた比較処理に係るコマンドの名称である。比較元ディレクトリ名は、比較元ファイル群21のディレクトリの名称である。比較先ディレクトリ名は、比較先ファイル群22のディレクトリの名称である。結果出力先は、比較結果ファイル25の出力先のディレクトリである。さらに、比較コマンドは、ソートルールが指定される場合、オプションの引数として、ソートルールがわかる符号を含むものとする。ソートルールがわかる符号は、一例として、「ファイル名昇順」の場合には「−s」、「ファイル名降順」の場合には「−k」を用いることができる。
初期化部12は、比較コマンドを実行するために用いられる制御データや変数を初期化する。初期化部12は、比較コマンドを解析する。なお、初期化部12は、比較コマンドの引数のチェックを行っても良い。
判定部13は、初期化部12の解析の結果、比較コマンドのオプションにソートルールの指定があるか否かを判定する。判定部13は、比較コマンドのオプションにソートルールの指定がない場合には、後述するソートなし比較部14に、ディレクトリ配下の複数のファイルをソートしないで比較処理を実行させる。また、判定部13は、比較コマンドのオプションにソートルールの指定がある場合には、後述するソートあり比較部15に、ディレクトリ配下の複数のファイルをソートしたうえで比較処理を実行させる。
ソートなし比較部14は、ディレクトリ配下の複数のファイルをソートしないで比較処理を実行する。すなわち、ソートなし比較部14は、比較元ディレクトリの配下に含まれる複数のファイルおよび比較先ディレクトリの配下に含まれる複数のファイルに対して、ファイル名が一致したファイル同士を突き合わせて比較処理を実行する。そして、ソートなし比較部14は、比較元ファイル名テーブル23に、比較元ディレクトリの配下に含まれるファイル毎にファイル名と比較結果を格納する。ソートなし比較部14は、比較先ファイル名テーブル24に、比較先ディレクトリの配下に含まれるファイル毎にファイル名と比較結果を格納する。なお、ファイル同士の比較処理は、例えば、ファイル同士の比較を行うための「diffコマンド」のアルゴリズムを用いれば良いが、これに限定されず、いかなる既知の技術を用いても良い。また、ソートなし比較部14の詳細については後述する。
ここで、ソートなし比較について、図4を参照して説明する。図4は、ソートなし比較を説明する図である。図4に示すように、比較元ディレクトリ(ディレクトリA)の配下に「111.txt」、「222.txt」、「333.txt」のファイルが含まれている。比較先ディレクトリ(ディレクトリB)の配下に「222.txt」、「333.txt」、「444.txt」のファイルが含まれている。
このような状況の下、ソートなし比較部14は、比較元ディレクトリに含まれる「111.txt」というファイル名が比較先ディレクトリに含まれないので、比較処理の処理結果を比較対象なしとする。ソートなし比較部14は、比較元ディレクトリに含まれる「222.txt」というファイル名が比較先ディレクトリに含まれるので、「222.txt」のファイル名同士の比較処理を実行する。ソートなし比較部14は、比較元ディレクトリに含まれる「333.txt」というファイル名が比較先ディレクトリに含まれるので、「333.txt」のファイル名同士の比較処理を実行する。ソートなし比較部14は、比較先ディレクトリに含まれる「444.txt」というファイル名が比較元ディレクトリに含まれないので、比較処理の処理結果を比較対象なしとする。
図1に戻って、ソートあり比較部15は、ディレクトリ配下の複数のファイルをソートしたうえで比較処理を実行する。すなわち、ソートあり比較部15は、比較元ディレクトリの配下に含まれる複数のファイルをソートルールに従ってソートし、比較先ディレクトリの配下に含まれる複数のファイルをソートルールに従ってソートする。そして、ソートあり比較部15は、ソートした結果の比較元ディレクトリに含まれる複数のファイルおよび比較先ディレクトリに含まれる複数のファイルに対して、先頭のファイルから順に突き合わせて、比較処理を実行する。つまり、ソートあり比較部15は、ソートした結果、比較元ディレクトリの1番目のファイルの内容と比較先ディレクトリの1番目のファイルの内容とを比較する。ソートあり比較部15は、ソートした結果、比較元ディレクトリのN番目のファイルの内容と比較先ディレクトリのN番目のファイルの内容とを比較する。そして、ソートあり比較部15は、比較元ファイル名テーブル23に、比較元ディレクトリの配下に含まれるファイル毎にファイル名と比較結果を格納する。ソートあり比較部15は、比較先ファイル名テーブル24に、比較先ディレクトリの配下に含まれるファイル毎にファイル名と比較結果を格納する。なお、ファイル同士の比較処理は、例えば、ファイルの比較を行うための「diffコマンド」のアルゴリズムを用いれば良いが、これに限定されず、いかなる既知の技術を用いても良い。また、ソートあり比較部15の詳細については後述する。
ここで、ソートあり比較について、図5を参照して説明する。図5は、ソートあり比較を説明する図である。なお、ソートルールは、「ファイル名昇順」であるとする。図5に示すように、ソートあり比較部15は、比較元ディレクトリ(ディレクトリA)の配下に含まれる複数のファイルをソートルールであるファイル名昇順に従ってソートする。ここでは、比較元ディレクトリ(ディレクトリA)の配下に「111.txt」、「222.txt」、「333.txt」のようにファイルがソートされたものとする。また、ソートあり比較部15は、比較先ディレクトリ(ディレクトリB)の配下に含まれる複数のファイルをソートルールであるファイル名昇順に従ってソートする。ここでは、比較先ディレクトリ(ディレクトリB)の配下に「222.txt」、「333.txt」、「444.txt」のようにファイルがソートされたものとする。
このような状況の下、ソートあり比較部15は、ソートした結果、比較元ディレクトリの1番目のファイル「111.txt」の内容と比較先ディレクトリの1番目のファイル「222.txt」の内容とを比較する。ソートあり比較部15は、ソートした結果、比較元ディレクトリの2番目のファイル「222.txt」の内容と比較先ディレクトリの2番目のファイル「333.txt」の内容とを比較する。ソートあり比較部15は、ソートした結果、比較元ディレクトリの3番目のファイル「333.txt」の内容と比較先ディレクトリの3番目のファイル「444.txt」の内容とを比較する。
図1に戻って、結果出力部16は、ソートなし比較部14またはソートあり比較部15により生成された比較元ファイル名テーブル23および比較先ファイル名テーブル24を用いて、ディレクトリ配下のファイルの比較結果のサマリを出力する。比較結果のサマリは、比較コマンドの結果出力先の結果出力ファイル25に出力される。
[ソートなし比較、ソートあり比較の具体例]
図6は、ソートなし比較の具体例を示す図である。図7は、ソートあり比較の具体例を示す図である。図6および図7に示すように、比較元ファイル群21には、比較元ディレクトリ「Old」の配下に「A.txt」、「B.txt」、「X.txt」のファイルが含まれている。比較元ディレクトリ「20140828」の配下に「0828a.txt」、「0828b.txt」、「0828c.txt」のファイルが含まれている。比較先ファイル群22には、比較先ディレクトリ「New」の配下に「A.txt」、「B.txt」、「Y.txt」のファイルが含まれている。比較先ディレクトリ「20140901」の配下に「0901a.txt」、「0901b.txt」、「0901c.txt」、「0901z.txt」のファイルが含まれている。
このような状況の下、入力部11は、比較元ディレクトリとして「Old」、比較先ディレクトリとして「New」、ソートルールは未指定である比較コマンドを受け取るとする。
すると、図6に示すように、ソートなし比較部14は、比較元ディレクトリ「Old」に含まれるファイル「A.txt」というファイル名が比較先ディレクトリ「New」に含まれるので、「A.txt」のファイル名同士の比較処理を実行する。ここでは、「¥Old¥A.txt」のデータと「¥New¥A.txt」のデータが一致している。そこで、ソートなし比較部14は、比較元ファイル名テーブル23の「A.txt」に対応する比較結果23cに「一致」を設定する。ソートなし比較部14は、比較先ファイル名テーブル24の「A.txt」に対応する比較結果24cに「一致」を設定する。
次に、ソートなし比較部14は、比較元ディレクトリ「Old」に含まれるファイル「B.txt」というファイル名が比較先ディレクトリ「New」に含まれるので、「B.txt」のファイル名同士の比較処理を実行する。ここでは、「¥Old¥B.txt」のデータと「¥New¥B.txt」のデータのうち1行目が一致していない。そこで、ソートなし比較部14は、比較元ファイル名テーブル23の「B.txt」に対応する比較結果23cに「不一致」を設定する。ソートなし比較部14は、比較先ファイル名テーブル24の「B.txt」に対応する比較結果24cに「不一致」を設定する。
次に、ソートなし比較部14は、比較元ディレクトリ「Old」に含まれるファイル「X.txt」というファイル名が比較先ディレクトリ「New」に含まれないので、比較処理を実行しない。そこで、ソートなし比較部14は、比較元ファイル名テーブル23の「X.txt」に対応する比較結果23cに「比較対象なし」を設定する。
さらに、ソートなし比較部14は、比較先ディレクトリ「New」に含まれるファイル「Y.txt」というファイル名が比較元ディレクトリ「Old」に含まれないので、比較処理を実行しない。そこで、ソートなし比較部14は、比較先ファイル名テーブル24の「Y.txt」に対応する比較結果24cに「比較対象なし」を設定する。
これに対して、入力部11は、比較元ディレクトリとして「20140828」、比較先ディレクトリとして「20140901」、ソートルールとして「ファイル名昇順」である比較コマンドを受け取るとする。
すると、図7に示すように、ソートあり比較部15は、比較元ディレクトリ「20140828」の配下に含まれる複数のファイルをソートルールであるファイル名昇順に従ってソートする。ここでは、比較元ディレクトリ「20140828」の配下に「0828a.txt」、「0828b.txt」、「0828c.txt」のようにファイルがソートされたものとする。ソートあり比較部15は、比較先ディレクトリ「20140901」の配下に含まれる複数のファイルをソートルールであるファイル名昇順に従ってソートする。ここでは、比較先ディレクトリ「20140901」の配下に「0901a.txt」、「0901b.txt」、「0901c.txt」、「0901z.txt」のようにファイルがソートされたものとする。
ソートあり比較部15は、ソートした結果、比較元ディレクトリの1番目のファイル「0828a.txt」の内容と比較先ディレクトリの1番目のファイル「0901a.txt」の内容を比較する。ここでは、「¥20140828¥0828a.txt」のデータと「¥20140901¥0901a.txt」のデータが一致している。そこで、ソートあり比較部15は、比較元ファイル名テーブル23の「0828a.txt」に対応する比較結果23cに「一致」を設定する。ソートあり比較部15は、比較先ファイル名テーブル24の「0901a.txt」に対応する比較結果24cに「一致」を設定する。
次に、ソートあり比較部15は、ソートした結果、比較元ディレクトリの2番目のファイル「0828b.txt」の内容と比較先ディレクトリの2番目のファイル「0901b.txt」の内容を比較する。ここでは、「¥20140828¥0828b.txt」のデータと「¥20140901¥0901b.txt」のデータが一致している。そこで、ソートあり比較部15は、比較元ファイル名テーブル23の「0828b.txt」に対応する比較結果23cに「一致」を設定する。ソートあり比較部15は、比較先ファイル名テーブル24の「0901b.txt」に対応する比較結果24cに「一致」を設定する。
次に、ソートあり比較部15は、ソートした結果、比較元ディレクトリの3番目のファイル「0828c.txt」の内容と比較先ディレクトリの3番目のファイル「0901c.txt」の内容を比較する。ここでは、「¥20140828¥0828c.txt」のデータと「¥20140901¥0901c.txt」のデータのうち1行目のデータが一致していない。そこで、ソートあり比較部15は、比較元ファイル名テーブル23の「0828c.txt」に対応する比較結果23cに「不一致」を設定する。ソートあり比較部15は、比較先ファイル名テーブル24の「0901c.txt」に対応する比較結果24cに「不一致」を設定する。
さらに、ソートあり比較部15は、ソートした結果、比較元ディレクトリの4番目のファイルの内容と比較先ディレクトリの4番目のファイル「0901z.txt」の内容を比較しようとする。ところが、ソートあり比較部15は、比較元ディレクトリ「20140828」の4番目のファイルが存在しないので、比較処理を実行しない。そこで、ソートあり比較部15は、比較先ファイル名テーブル24の「0901z.txt」に対応する比較結果24cに何も設定しない。なお、ソートあり比較部15は、かかる場合に、対応する比較結果24cに「比較対象なし」を設定するようにしても良い。
[比較処理の全体のフローチャート]
次に、実施例に係る比較処理の全体のフローチャートを、図8を参照して説明する。図8は、実施例に係る比較結果の全体のフローチャートを示す図である。
図8に示すように、入力部11は、比較コマンドの入力を受け付ける(ステップS11)。初期化部12は、比較コマンドを実行するために用いられる各種データを初期化する(ステップS12)。初期化部12は、比較コマンドの引数を解析する(ステップS13)。初期化部12は、比較コマンドのオプションを解析する(ステップS14)。
そして、判定部13は、比較コマンドのオプションにソートルールの指定があるか否かを判定する(ステップS15)。ソートルールの指定がないと判定した場合には(ステップS15;No)、ソートなし比較部14は、ソートなし比較処理を実行する(ステップS16)。なお、ソートなし比較処理のフローチャートは、後述する。そして、ソートなし比較部14は、比較結果のサマリを出力すべく、ステップS20に移行する。
一方、ソートルールの指定があると判定した場合には(ステップS15;Yes)、ソートあり比較部15は、ソートルールの指定が「ファイル名降順」であるか否かを判定する(ステップS17)。ソートルールの指定が「ファイル名降順」であると判定した場合には(ステップS17;Yes)、ソートあり比較部15は、降順フラグを、例えば記憶部20の一時領域に設定し(ステップS18)、ソートあり比較処理をすべく、ステップS19に移行する。
一方、ソートルールの指定が「ファイル名降順」でないと判定した場合には(ステップS17;No)、ソートあり比較部15は、ソートあり比較処理をすべく、ステップS19に移行する。ステップS19では、ソートあり比較部15は、ソートあり比較処理を実行する(ステップS19)。なお、ソートあり比較処理のフローチャートは、後述する。そして、ソートあり比較部15は、比較結果のサマリを出力すべく、ステップS20に移行する。
ステップS20では、結果出力部16は、指定された比較元ディレクトリおよび比較先ディレクトリ配下のファイルについて、比較結果のサマリを出力する(ステップS20)。
[ソートなし比較処理のフローチャート]
次に、ソートなし比較処理のフローチャートを、図9Aおよび図9Bを参照して説明する。図9Aおよび図9Bは、ソートなし比較結果のフローチャートを示す図である。なお、以下では、図6に示される比較元ファイル群21および比較先ファイル群22を使用して説明する。また、以下では、図11に示される比較元ファイル名テーブル23、比較先ファイル名テーブル24および一時的に用いられる比較ペアファイル名テーブルを適宜使用しながら説明する。
ここでは、比較コマンドの引数は、比較元ディレクトリとして「Old」、比較先ディレクトリとして「New」、ソートルールとして未指定であるとする。
図9に示すように、ソートなし比較部14は、記憶部20の各テーブルを初期化する(ステップS21)。ここでいうテーブルは、比較元ファイル名テーブル23、比較先ファイル名テーブル24および比較ペアファイル名テーブルのことをいう。
ソートなし比較部14は、比較元ディレクトリ内に存在する全ファイルの名称を取得し、比較元ファイル名テーブル23の比較元ファイル名23bの列に設定し(ステップS22)、ファイル数をO1とする。ここでは、ソートなし比較部14は、比較元ディレクトリ「Old」から全ファイルの名称を取得する。ソートなし比較部14は、比較元ファイル名テーブル23について、No23a列に「1」、「2」、「3」および比較元ファイル名23b列に「B.txt」、「A.txt」、「X.txt」を設定する(図11第1段目)。
ソートなし比較部14は、比較先ディレクトリ内に存在する全ファイルの名称を取得し、比較先ファイル名テーブル24の比較先ファイル名24bの列に設定し(ステップS23)、ファイル数をO2とする。ここでは、ソートなし比較部14は、比較先ディレクトリ「New」から全ファイルの名称を取得する。ソートなし比較部14は、比較先ファイル名テーブル24について、No24a列に「1」、「2」、「3」および比較先ファイル名24b列に「A.txt」、「B.txt」、「Y.txt」を設定する(図11第2段目)。
ソートなし比較部14は、比較元ファイル名テーブル23を用いて比較ペアファイル名テーブルの比較元ファイル名欄に設定する(ステップS24)。ここでは、ソートなし比較部14は、比較ペアファイル名テーブルについて、No列に「1」、「2」、「3」および比較元ファイル名欄に「B.txt」、「A.txt」、「X.txt」を設定する(図11第3段目)。
ソートなし比較部14は、比較先ファイル名テーブル24のNo「1」を変数nに設定する(ステップS25)。ソートなし比較部14は、比較元ファイル名のファイル数のO1+1を変数pに設定する(ステップS26)。
ソートなし比較部14は、比較先ファイル名テーブル24のNo24aが変数nの値である行の比較先ファイル名24bを取得する(ステップS27)。ここでは、取得された比較先ファイル名をF1とする。ソートなし比較部14は、比較ペアファイル名テーブルのNo「1」を変数mに設定する(ステップS28)。
ソートなし比較部14は、比較ペアファイル名テーブルのNoが変数mの値である行の比較元ファイル名を取得する(ステップS29)。ここでは、取得された比較元ファイル名をF2とする。そして、ソートなし比較部14は、比較先ファイル名テーブル24から取得された比較先ファイル名F1と比較ペアファイル名テーブルから取得された比較元ファイル名F2とが一致するか否かを判定する(ステップS30)。
F1とF2とが一致しないと判定した場合には(ステップS30;No)、ソートなし比較部14は、比較ペアファイル名テーブルの次のNoを指すべく、変数mを1加算する(ステップS31)。そして、ソートなし比較部14は、比較ペアファイル名テーブルのNoを示す変数mが比較元ファイル名のファイル数を示すO1より大きいか否かを判定する(ステップS32)。
変数mがO1より大きくないと判定した場合には(ステップS32;No)、ソートなし比較部14は、比較ペアファイル名テーブルの次の比較元ファイル名を取得すべく、ステップS29に移行する。
ステップS30において、F1とF2とが一致すると判定した場合には(ステップS30;Yes)、ソートなし比較部14は、比較ペアファイル名テーブルのNoが変数mの値である行の比較先ファイル名列に、F1を設定する(ステップS33)。ここでは、F1が比較先ファイル名「A.txt」である場合に、比較ペアファイル名テーブルの2行目の比較先ファイル名欄に「A.txt」が設定される(図11第4段)。F1が比較先ファイル名「B.txt」である場合に、比較ペアファイル名テーブルの1行目の比較先ファイル名欄に「B.txt」が設定される(図11第4段)。そして、ソートなし比較部14は、比較先ファイル名テーブル24の次の比較先ファイルのファイル名判定をすべく、ステップS35に移行する。
一方、変数mがO1より大きいと判定した場合には(ステップS32;Yes)、ソートなし比較部14は、比較ペアファイル名テーブルのNoが変数pの値である行の比較先ファイル名欄に、F1を設定する(ステップS33A)。ここでは、F1が比較先ファイル名「Y.txt」である場合に、比較ペアファイル名テーブルの4行目の比較先ファイル名欄に「Y.txt」が設定される(図11第4段)。そして、ソートなし比較部14は、比較ペアファイル名テーブルの次のNoを指すべく、変数pを1加算する(ステップS34)。そして、ソートなし比較部14は、比較先ファイル名テーブル24の次の比較先ファイルのファイル名判定をすべく、ステップS35に移行する。
ステップS35では、ソートなし比較部14は、比較先ファイル名テーブル24の次のNoを指すべく、変数nを1加算する(ステップS35)。ソートなし比較部14は、比較先ファイル名テーブル23のNoを示す変数nが比較先ファイル名のファイル数を示すO2より大きいか否かを判定する(ステップS36)。
変数nがO2より大きくないと判定した場合には(ステップS36;No)、ソートなし比較部14は、比較先ファイル名テーブル24の次の比較先ファイル名を取得すべく、ステップS27に移行する。
一方、変数nがO2より大きいと判定した場合には(ステップS36;Yes)、ソートなし比較部14は、比較先ファイル名テーブル24の全ファイルについて、比較元ファイルとのファイル名判定を終了する。この結果、ファイル名判定の結果は、比較ペアファイル名テーブルに記憶されている。
続いて、ソートなし比較部14は、比較ペアファイル名テーブルのNo「1」を変数kに設定する(ステップS37)。
ソートなし比較部14は、比較ペアファイル名テーブルのNoが変数kの値である行の比較元ファイル名をF1に、比較先ファイル名をF2に設定する(ステップS38)。ソートなし比較部14は、F2にファイル名が設定されていないかどうかを判定する(ステップS39)。F2にファイル名が設定されていないと判定した場合には(ステップS39;Yes)、ソートなし比較部14は、(比較元のF1は)「比較対象なし」を、比較元ファイル名テーブル23のF1に対応する比較結果23cの欄に設定する(ステップS40)。ここでは、変数kが3の場合、比較元ファイル名のF1に「X.txt」が設定されているが、比較先ファイル名のF2にファイル名が設定されていない。したがって、比較元ファイル名テーブル23の「X.txt」に対応する比較結果23cに「比較対象なし」が設定される(図11第5段)。そして、ソートなし比較部14は、比較ペアファイル名テーブルの次のNoに進むべく、ステップS45に移行する。
一方、F2にファイル名が設定されていると判定した場合には(ステップS39;No)、ソートなし比較部14は、F1にファイル名が設定されていないかどうかを判定する(ステップS41)。F1にファイル名が設定されていないと判定した場合には(ステップS41;Yes)、ソートなし比較部14は、(比較先のF2は)「比較対象なし」を、比較先ファイル名テーブル24のF2に対応する比較結果24cの欄に設定する(ステップS42)。ここでは、変数kが4の場合、比較先ファイル名のF2に「Y.txt」が設定されているが、比較元ファイル名のF1にファイル名が設定されていない。したがって、比較先ファイル名テーブル24の「Y.txt」に対応する比較結果24cに「比較対象なし」が設定される(図11第5段)。そして、ソートなし比較部14は、比較ペアファイル名テーブルの次のNoに進むべく、ステップS45に移行する。
一方、F1にファイル名が設定されていると判定した場合には(ステップS41;No)、ソートなし比較部14は、比較元ディレクトリ内の該ファイル(F1)の内容と、比較先ディレクトリ内の該ファイル(F2)の内容とを比較する(ステップS43)。そして、ソートなし比較部14は、比較結果を、F1、F2に対応する比較結果欄に設定する(ステップS44)。すなわち、ソートなし比較部14は、比較結果を、比較元ファイル名テーブル23のF1に対応する比較結果23cに設定し、比較結果を、比較先ファイル名テーブル24のF2に対応する比較結果24cに設定する。そして、ソートなし比較部14は、比較ペアファイル名テーブルの次のNoに進むべく、ステップS45に移行する。
ステップS45では、ソートなし比較部14は、比較ペアファイル名テーブルの次のNoを指すべく、変数kを1加算する(ステップS45)。そして、ソートなし比較部14は、変数kが変数pより小さいか否かを判定する(ステップS46)。変数kが変数pより小さいと判定した場合には(ステップS46;Yes)、ソートなし比較部14は、比較ペアファイル名テーブルの次のNoの処理をすべく、ステップS38に移行する。
一方、変数kが変数pより小さくないと判定した場合には(ステップS46;No)、ソートなし比較部14は、ソートなし比較処理を終了する。
[ソートあり比較処理のフローチャート]
次に、ソートあり比較処理のフローチャートを、図10を参照して説明する。図10は、ソートあり比較結果のフローチャートを示す図である。なお、以下では、図7に示される比較元ファイル群21および比較先ファイル群22を使用して説明する。また、以下では、図12に示される比較元ファイル名テーブル23および比較先ファイル名テーブル24を適宜使用しながら説明する。
ここでは、比較コマンドの引数は、比較元ディレクトリとして「20140828」、比較先ディレクトリとして「20140901」、ソートルールとして「ファイル名昇順」であるとする。
図10に示すように、ソートあり比較部15は、記憶部20の各テーブル、フラグを初期化する(ステップS51)。ここでいうテーブルは、比較元ファイル名テーブル23および比較先ファイル名テーブル24のことをいう。ここでいうフラグは、例えば降順フラグのことをいう。
ソートあり比較部15は、比較元ディレクトリ内に存在する全ファイルの名称を取得し、比較元ファイル名テーブル23の比較元ファイル名23bの列に設定する(ステップS52)。ソートあり比較部15は、比較元ファイル名テーブル23のレコード数をOとする(ステップS53)。ここでは、ソートあり比較部15は、比較元ディレクトリ「20140828」から全ファイルの名称を取得する。ソートあり比較部15は、比較元ファイル名テーブル23について、No23a列に「1」、「2」、「3」および比較元ファイル名23b列に「0828c.txt」、「0828b.txt」、「0828a.txt」を設定する(図12第1段目左)。
ソートあり比較部15は、比較先ディレクトリ内に存在する全ファイルの名称を取得し、比較先ファイル名テーブル24の比較先ファイル名24bの列に設定する(ステップS54)。ソートあり比較部15は、比較先ファイル名テーブル24のレコード数をTとする(ステップS55)。ここでは、ソートあり比較部15は、比較先ディレクトリ「20140901」から全ファイルの名称を取得する。ソートあり比較部15は、比較先ファイル名テーブル24について、No24a列に「1」、「2」、「3」、「4」および比較先ファイル名24b列に「0901z.txt」、「0901c.txt」、「0901b.txt」、「0901a.txt」を設定する(図12第1段目右)。
ソートあり比較部15は、降順フラグを例えば記憶部20の一時領域から読み込む(ステップS56)。ソートあり比較部15は、降順フラグが設定されているか否かを判定する(ステップS57)。
降順フラグが設定されていないと判定した場合には(ステップS57;No)、ソートあり比較部15は、比較元ファイル名テーブル23および比較先ファイル名テーブル24それぞれをファイル名昇順にソートする(ステップS58)。そして、ソートあり比較部15は、ソート種類を、昇順として設定する。ここでは、ソートルールが「ファイル名昇順」であるので、ソートあり比較部15は、比較元ファイル名テーブル23の比較元ファイル名23bをファイル名昇順にソートし、比較先ファイル名テーブル24の比較先ファイル名24bをファイル名昇順にソートする。この結果、比較元ファイル名テーブル23の比較元ファイル名23bは、「0828a.txt」、「0828b.txt」、「0828c.txt」の順に並べ替えられる(図12第2段目左)。比較先ファイル名テーブル24の比較先ファイル名24bは、「0901a.txt」、「0901b.txt」、「0901c.txt」、「0901z.txt」の順に並べ替えられる(図12第2段目右)。
一方、降順フラグが設定されていると判定した場合には(ステップS57;Yes)、ソートあり比較部15は、比較元ファイル名テーブル23および比較先ファイル名テーブル24それぞれをファイル名降順にソートする(ステップS59)。そして、ソートあり比較部15は、ソート種類を、降順として設定する。
ソートあり比較部15は、比較元ファイル名テーブル23のレコード数Oと比較先ファイル名テーブル24のレコード数Tとを比較し、小さいほうをMとする(ステップS60)。ここでは、比較元ファイル名テーブル23のレコード数O(3)の方が比較先ファイル名テーブル24のレコード数T(4)より小さいので、Mには、O(3)が設定される。そして、ソートあり比較部15は、比較元ファイル名テーブル23、比較先ファイル名テーブル24の行番号「1」を変数nに設定する(ステップS61)。
ソートあり比較部15は、比較元ファイル名テーブル23のn番目のレコードのファイル名のファイルを比較ペア1とする(ステップS62)。ソートあり比較部15は、比較先ファイル名テーブル24のn番目のレコードのファイル名のファイルを比較ペア2とする(ステップS63)。
ソートあり比較部15は、比較ペア1と比較ペア2のファイルの内容を比較する(ステップS64)。ここでは、ソートあり比較部15は、nが1の場合には、「0828a.txt」の内容と「0901a.txt」の内容とを比較する(図12第3段目)。nが2の場合には、「0828b.txt」の内容と「0901b.txt」の内容とを比較する(図12第3段目)。nが3の場合には、「0828c.txt」の内容と「0901c.txt」の内容とを比較する(図12第3段)。なお、nが4の場合には、比較先「0901z.txt」に対応する比較元の比較対象がない(図12第3段目)。
ソートあり比較部15は、比較の結果、一致したか否かを判定する(ステップS65)。一致したと判定した場合には(ステップS65;Yes)、ソートあり比較部15は、比較元ファイル名テーブル23のn番目のレコードの比較結果23cの欄に、「一致」にソート種類を加えた比較結果を設定する(ステップS66)。ソートあり比較部15は、比較先ファイル名テーブル24のn番目のレコードの比較結果24cの欄に、「一致」にソート種類を加えた比較結果を設定する(ステップS67)。ここでは、一例として、ソートあり比較部15は、nが1の場合には、「0828a.txt」と「0901a.txt」が一致するので、比較結果23cの欄に「昇順比較、一致」を設定する。比較結果24cの欄に「昇順比較、一致」を設定する(図12第3段目)。
一方、一致しないと判定した場合には(ステップS65;No)、ソートあり比較部15は、比較元ファイル名テーブル23のn番目のレコードの比較結果23cの欄に、「不一致」にソート種類を加えた比較結果を設定する(ステップS68)。ソートあり比較部15は、比較先ファイル名テーブル24のn番目のレコードの比較結果24cの欄に、「不一致」にソート種類を加えた比較結果を設定する(ステップS69)。ここでは、一例として、ソートあり比較部15は、nが3の場合には、「0828c.txt」と「0901c.txt」が一致しないので、比較結果23cの欄に「昇順比較、不一致」を設定する。比較結果24cの欄に「昇順比較、不一致」を設定する(図12第3段目)。
ソートあり比較部15は、次の行番号を指すべく、変数nを1加算する(ステップS70)。ソートあり比較部15は、変数nがMより大きいか否かを判定する(ステップS71)。変数nがMより大きくないと判定した場合には(ステップS71;No)、ソートあり比較部15は、次の行番号の比較をすべく、ステップS62に移行する。
一方、変数nがMより大きいと判定した場合には(ステップS71;Yes)、ソートあり比較部15は、ソートあり比較処理を終了する。
[結果出力の一例]
図13Aおよび図13Bは、結果出力の一例を示す図である。
図13Aでは、図6で示した比較元ディレクトリとして「Old」、比較先ディレクトリとして「New」を引数とし、ソートルールを未指定とした比較コマンドを実行した場合の結果出力の一例である。ソートなし比較部14によって、図11第5段目に示すような比較元ファイル名テーブル23および比較先ファイル名テーブル24が生成されたものとする。
このような状況の下、結果出力部16は、比較元ファイル名テーブル23を用いて、比較元ディレクトリ「Old」配下のファイルの比較結果のサマリを出力する。結果出力部16は、比較先ファイル名テーブル24を用いて、比較先ディレクトリ「New」配下のファイルの比較結果のサマリを出力する。
ここでは、結果出力ファイル25には、1行目に、ディレクトリ名として「¥Old」、比較ファイル数として「3」、不一致ファイル数として「2」、比較ファイル選択ルールとして「ファイル名一致」、比較結果として「NG」が記憶されている。ここで、不一致ファイル数が「2」であるのは、比較元ファイル名テーブル23の比較元ファイル名23b「B.txt」および「X.txt」の比較結果が「一致」でないからである(図11第5段目)。また、比較ファイル選択ルールが「ファイル名一致」であるのは、ソートルールが未指定であるからである。比較結果が「NG」であるのは、不一致ファイル数が1以上であるからである。
また、結果出力ファイル25には、2行目に、ディレクトリ名として「¥New」、比較ファイル数として「3」、不一致ファイル数として「2」、比較ファイル選択ルールとして「ファイル名一致」、比較結果として「NG」が記憶されている。ここで、不一致ファイル数が「2」であるのは、比較先ファイル名テーブル24の比較先ファイル名24b「B.txt」および「Y.txt」の比較結果が「一致」でないからである(図11第5段目)。また、比較ファイル選択ルールが「ファイル名一致」であるのは、ソートルールが未指定であるからである。比較結果が「NG」であるのは、不一致ファイル数が1以上であるからである。
図13Bでは、図7で示した比較元ディレクトリとして「20140828」、比較先ディレクトリとして「20140901」、ソートルールとして「−s」を引数とした比較コマンドを実行した場合の結果出力の一例である。ソートあり比較部15によって、図12第3段目に示すような比較元ファイル名テーブル23および比較先ファイル名テーブル24が生成されたものとする。
このような状況の下、結果出力部16は、比較元ファイル名テーブル23を用いて、比較元ディレクトリ「20140828」配下のファイルの比較結果のサマリを出力する。結果出力部16は、比較先ファイル名テーブル24を用いて、比較先ディレクトリ「20140901」配下のファイルの比較結果のサマリを出力する。
ここでは、結果出力ファイル25には、1行目に、ディレクトリ名として「¥20140828」、比較ファイル数として「3」、不一致ファイル数として「1」、比較ファイル選択ルールとして「ファイル名昇順」、比較結果として「NG」が記憶されている。ここで、不一致ファイル数が「1」であるのは、比較元ファイル名テーブル23の比較元ファイル名23b「0828c.txt」の比較結果が「一致」でないからである(図12第3段目)。また、比較ファイル選択ルールが「ファイル名昇順」であるのは、ソートルールが「ファイル名昇順」を示す「−s」であるからである。比較結果が「NG」であるのは、不一致ファイル数が1以上であるからである。
また、結果出力ファイル25には、2行目に、ディレクトリ名として「¥20140901」、比較ファイル数として「4」、不一致ファイル数として「2」、比較ファイル選択ルールとして「ファイル名昇順」、比較結果として「NG」が記憶されている。ここで、不一致ファイル数が「2」であるのは、比較先ファイル名テーブル24の比較先ファイル名24b「0901c.txt」と「0901z.txt」の比較結果が「一致」でないからである(図12第3段目)。また、比較ファイル選択ルールが「ファイル名昇順」であるのは、ソートルールが「ファイル名昇順」を示す「−s」であるからである。比較結果が「NG」であるのは、不一致ファイル数が1以上であるからである。
なお、ソートルールは、ファイル名の順に従ったルールであり、例えば、ファイル名の昇順や降順であると説明した。しかしながら、ソートルールは、これに限定されず、例えば、ファイル名の所定位置から所定文字数分の昇順や降順であっても良い。すなわち、ソートあり比較部15は、比較元ディレクトリの配下に含まれる複数のファイルを、ファイル名の所定位置から所定文字数分の順に従ったソートルールでソートし、比較先ディレクトリの配下に含まれる複数のファイルを該ソートルールでソートする。そして、ソートあり比較部15は、ソートした結果の比較元ディレクトリに含まれる複数のファイルおよび比較先ディレクトリに含まれる複数のファイルに対して、先頭のファイルから順に突き合わせて、比較処理を実行すれば良い。
また、ソートルールは、ファイルの日時に関するメタ情報の昇順や降順であっても良い。ファイルの日時に関するメタ情報には、例えば、ファイルの作成日時、アクセス日時、更新日時などのタイムスタンプが含まれる。すなわち、ソートあり比較部15は、比較元ディレクトリの配下に含まれる複数のファイルを、ファイルの作成日時の順に従ったソートルールでソートし、比較先ディレクトリの配下に含まれる複数のファイルを該ソートルールでソートする。そして、ソートあり比較部15は、ソートした結果の比較元ディレクトリに含まれる複数のファイルおよび比較先ディレクトリに含まれる複数のファイルに対して、先頭のファイルから順に突き合わせて、比較処理を実行すれば良い。
[実施例の効果]
このようにして、上記実施例では、情報処理装置1が、比較処理を行う対象の第一のディレクトリと第二のディレクトリとの指定に加えて、ファイル名の順に従ったソートルールの指定を受け付ける。情報処理装置1は、第一のディレクトリの配下に含まれる複数のファイルをファイル名の順でソートする。情報処理装置1は、第二のディレクトリの配下に含まれる複数のファイルをファイル名の順でソートする。情報処理装置1は、第一のディレクトリの配下をソートしたN番目に対応するファイルの内容と、第二のディレクトリの配下をソートしたN番目に対応するファイルの内容とを比較する。そして、情報処理装置1は、比較結果を出力する。これにより、情報処理装置1は、新旧システムにおいて、ファイル名が一致していない場合であっても、比較対象を自動的に設定できる。
また、上記実施例では、ファイル名の順に従ったソートルールは、ファイル名の昇順または降順のソートである。これにより、情報処理装置1は、第一のディレクトリの配下に含まれる複数のファイルをファイル名の昇順(または降順)でソートし、第二のディレクトリの配下に含まれる複数のファイルをファイル名の昇順(または降順)でソートする。この結果、情報処理装置1は、新旧システムにおいて、同等の機能を実行した際、ファイル名が実行タイミングに依存して命名される場合であっても、ファイル名の昇順(または降順)のソートを行うことで、比較対象を自動的に対応付けることが可能となる。
また、上記実施例では、ファイル名の順に従ったソートルールは、ファイル名の所定位置から所定文字数分の昇順または降順のソートである。これにより、情報処理装置1は、第一のディレクトリの配下に含まれる複数のファイルをファイル名の所定位置から所定文字数分の昇順(または降順)でソートする。情報処理装置1は、第二のディレクトリの配下に含まれる複数のファイルをファイル名の所定位置から所定文字数分の昇順(または降順)でソートする。この結果、情報処理装置1は、新旧システムにおいて、同等の機能を実行した際、ファイル名が実行タイミングに依存して命名される場合であっても、ファイル名の昇順(または降順)のソートを行うことで、比較対象を自動的に対応付けることが可能となる。
[その他]
なお、図示した装置の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、装置の分散・統合の具体的態様は図示のものに限られず、その全部または一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、初期化部12と判定部13とを1個の部として統合しても良い。また、比較元ファイル群21、比較先ファイル群22、比較元ファイル名テーブル23、比較先ファイル名テーブル24および結果出力ファイル25を情報処理装置1の外部装置としてネットワーク経由で接続するようにしても良い。
また、上記実施例で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーション等のコンピュータで実行することによって実現することができる。そこで、以下では、図1に示した情報処理装置1と同様の機能を実現する比較プログラムを実行するコンピュータの一例を説明する。図14は、比較プログラムを実行するコンピュータの一例を示す図である。
図14に示すように、コンピュータ200は、各種演算処理を実行するCPU203と、ユーザからのデータの入力を受け付ける入力装置215と、表示装置209を制御する表示制御部207とを有する。また、コンピュータ200は、記憶媒体からプログラムなどを読取るドライブ装置213と、ネットワークを介して他のコンピュータとの間でデータの授受を行う通信制御部217とを有する。また、コンピュータ200は、各種情報を一時記憶するメモリ201と、HDD205を有する。そして、メモリ201、CPU203、HDD205、表示制御部207、ドライブ装置213、入力装置215、通信制御部217は、バス219で接続されている。
ドライブ装置213は、例えばリムーバブルディスク211用の装置である。HDD205は、比較プログラム205aおよび比較処理関連情報205bを記憶する。
CPU203は、比較プログラム205aを読み出して、メモリ201に展開し、プロセスとして実行する。かかるプロセスは、情報処理装置1の各機能部に対応する。比較処理関連情報205bは、比較元ファイル群21、比較先ファイル群22、比較元ファイル名テーブル23、比較先ファイル名テーブル24および結果出力ファイル25に対応する。そして、例えばリムーバブルディスク211が、比較プログラム205aなどの各情報を記憶する。
なお、比較プログラム205aについては、必ずしも最初からHDD205に記憶させておかなくても良い。例えば、コンピュータ200に挿入されるフレキシブルディスク(FD)、CD−ROM、DVDディスク、光磁気ディスク、ICカード等の「可搬用の物理媒体」に当該プログラムを記憶させておく。そして、コンピュータ200がこれらから比較プログラム205aを読み出して実行するようにしても良い。
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)比較処理を行う対象の第一のディレクトリと第二のディレクトリとの指定に加えて、ファイル名の順に従ったソートルールの指定を受け付け、
前記第一のディレクトリの配下に含まれる複数のファイルをファイル名の順でソートした場合にN番目に対応するファイルの内容と、前記第二のディレクトリの配下に含まれる複数のファイルをファイル名の順でソートした場合にN番目に対応するファイルの内容とを比較し、
比較結果を出力する
処理をコンピュータに実行させることを特徴とする比較プログラム。
(付記2)前記ファイル名の順に従ったソートルールは、ファイル名の昇順または降順のソートである
ことを特徴とする付記1に記載の比較プログラム。
(付記3)前記ファイル名の順に従ったソートルールは、ファイル名の所定位置から所定文字数分の昇順または降順のソートである
ことを特徴とする付記1に記載の比較プログラム。
(付記4)コンピュータが、
比較処理を行う対象の第一のディレクトリと第二のディレクトリとの指定に加えて、ファイル名の順に従ったソートルールの指定を受け付け、
前記第一のディレクトリの配下に含まれる複数のファイルをファイル名の順でソートした場合にN番目に対応するファイルの内容と、前記第二のディレクトリの配下に含まれる複数のファイルをファイル名の順でソートした場合にN番目に対応するファイルの内容とを比較し、
比較結果を出力する
各処理を実行することを特徴とする比較方法。
(付記5)比較処理を行う対象の第一のディレクトリと第二のディレクトリとの指定に加えて、ファイル名の順に従ったソートルールの指定を受け付ける受付部と、
前記第一のディレクトリの配下に含まれる複数のファイルをファイル名の順でソートした場合にN番目に対応するファイルの内容と、前記第二のディレクトリの配下に含まれる複数のファイルをファイル名の順でソートした場合にN番目に対応するファイルの内容とを比較する比較部と、
比較結果を出力する出力部と、
を有することを特徴とする情報処理装置。