• ベストアンサー

2つのファイルの内容をを後ろから比較

2つのファイルを比較する際、DOSコマンドで「FC」や「COMP」をつかって 比較することが出来ますが、これだとファイルの頭からしか比較することが できなくて困っています。 DOSや他のソフトでもよいのですが2つのファイルの一番最後の行から 順に上に上がって比較することはできないでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

No.1の補足に対する回答。 ファイルの内容を二分割して、分割する都度前後を入れ替える操作を続けていくと、ついには下記の【例-1】に示すように、逆順になります。これはヒントです。 100M超の容量ではここまで細分化できないでしょうから、100KB程度の容量に落ちるまで細分化作業を続け、それぞれを逆順とし、Append-modeで書き込んでいけば逆順ファイルができます。 分割後のファイル名のつけ方は、最初の名前を"f0"としたときを基準にして【例-2】に付記してあります。この規則に従えば、最後の「統合」段階では、ファイル名の昇順で処理していけばいいことになりましょう。 ややこしい処理ですが、これぞ情報処理の真髄というような処理ですから、がんばってください。 【例-1】 123456789abcdefg   ↓ 9abcdefg 12345678   ↓ defg 9abc 5678 1234   ↓ fg de bc 9a 78 56 34 12   ↓ g f e d c b 8 7 6 5 4 3 2 1 【例-2】(実際) 123456789abcdefg…………f0   ↓(細分化) 9abcdefg 12345678……… f01 f02   ↓(細分化) defg 9abc 5678 1234…… f011 f012 f021 f022   ↓(内容の逆順化) gfed cba9 8765 4321…… f011 f012 f021 f022   ↓(統合) gfedcba987654321…………f_kansei

pony666
質問者

お礼

細分化していけば重いファイルでもなんとかなるかもしれないですね。 ちょっと試してみようと思います。どうもありがとうございました。

その他の回答 (1)

回答No.1

ファイルの内容を逆順に変換できるソフトがあれば「FC」や「COMP」で比較可能でしょう。

pony666
質問者

補足

確かに逆順に変換して比較というのも考えました。 まず各行に順に番号を振って降順で並べ替えて比較すればよいのですが、実はファイルサイズが1 00Mを超えておりファイル自体を書き換えたりするのが非常に大変なためできるだけソフトで逆から 比較がしたかったのですが何かよい方法はないでしょうか?

関連するQ&A

  • バイナリファイルの比較

    バイナリファイルの比較をして差異があるかDOSコマンドで調べたいのですがどうすればよいでしょうか?ちなみにFCコマンドだとレングスチェックしかされないのでだめでした。

  • ファイルの比較

    とあるソフトをインストールする前と、した後でのレジストリ内容を比較したいと思っています。 インストール前のレジストリと後のレジストリをテキストにエクスポートして、FCコマンドで テキストを比較しようとしました。 c:\>fc before.txt after.txt /a ところが、「再同期に失敗しました。ファイルが著しく異なります」とメッセージが出て どこの部分が前後で異なるのかが分かりません。 ちなみにどちらのファイルも100MB位です。 どうやったら、比較が出来ますでしょうか?アドバイスを宜しくお願い致します。

  • VBの比較

    VBの新旧のコードを比較したいのですが、どうすればよろしいでしょうか?。DOSコマンド(FC)ではさっぱりわかりません。どなたかご存知の方教えて下さい。

  • バッチファイルで自動にファイルを比較させたい

    あるフォルダ内には2ファイルしかないものとして、 その2ファイルの差異を 自動に比較できないでしょうか。 FCコマンドとDIRコマンドを組み合わせてできるのかなと安易な考えしかなく、具体的にどうしたら良いのかもわかりません。 その都度、FCコマンドを実行すれば済むことですが、バッチファイルを作成して自動になるものであれば自動にしたいので、教えていただけないでしょうか。 ヒントでも構いません。 よろしくおねがいします。

  • BATファイルによるfcコマンドでのファイル比較のエラー

    BATファイルによる、fcコマンドでのファイル比較を行いたいのですが、直接コマンドプロンプトで実行した場合では、正常に結果が指定ファイルに出力されるのに対して、BATファイルで同様のコマンドを実行しても, fcコマンドの比較結果が正常に出力されません。 原因を分かる方がいらっしゃいましたら、教えて頂けますでしょうか? 実行するfcコマンド内容 fc c:\a.txt c:\b.txt > c:\c.txt

  • 多数ファイルの比較

    java初心者の者です。ちょっとしたことで、仕事でjavaを使ってファイル(txt)から単語を抜き出して、他のファイルの単語と比較するという作業をやりたいと思っています。ファイルの中身は行ごとにわかれており、その行に単語がスペースをあけてならべられています。そして、ファイルと他のファイルの単語を行ごとに、総当りで比較しなければなりません。そしてファイルとファイルの近似値をだし、また違うファイルと比較、という風に比較していきます。しかもファイルは100以上あります。このような場合、javaではどうゆう風に比較するが一番効率がいいのでしょか? なんせ、勉強不足で配列とlistで比較する方法くらいしか思いつきません。なにとぞ、ご教授おねがいします。 file1.txt--- 単語1 単語2 単語3・・・ 単語5 単語4  単語6 単語7 単語8 ・ ・ ・

  • 再質問 ファイル比較について

    VB5.0を使用しております。初心者で解らない事だらけの為質問を致します。 FD内のデータとHD内にあるファイル26個を順に比較したいのですが 以前質問して下記プログラムを組んでみたのですが 動作しているかも判りません。 どなたか解説及び添削を御願い致します。 やりたい事は、データ変換をして出来たファイルをFDとHD内にバックアップとしてコピーをしています。そのデータを1ファイルずつ比較し問題が無いか確認したいのです。以前よりFDにコピーした際に、書き込み不良が発生し使用出来ない事があった為です。 御手数をお掛け致しますが、宜しくお願い致します。 作成したプログラム 'Private Sub Command1_Click() Function Comp(ByVal F1$, ByVal F2$) As Long Dim EXE, STD, TxT$, CNT& F1 = ("a:\W-NO-01.DAT") F2 = ("c:\VB\W-NO-01.DAT") TxT = "FC /B" & F1 & " " & F2 Set EXE = CreateObject("WScript.Shell").Exec(TxT) Set STD = EXE.StdOut Do Until STD.AtEndOfStream TxT = STD.ReadLine CNT = CNT + 1 If CNT = 2 Then Exit Do Loop If EXE.Status = 0 Then EXE.Terminate If TxT = "FC: 相違点は検出されませんでした" Then CNT = 0 Else CNT = 1 End If Else CNT = EXE.ExitCode End If STD.Close Comp = CNT Dim keka As Long keka = Comp("a:\W-NO-01.DAT", "c:\VB\W-NO-01.DAT") Select Case keka Case 0: MsgBox "二つのファイルの内容は等しい" Case 1: MsgBox "二つのファイルの内容は等しくない" Case 2: MsgBox "入出力障害を検出した" End Select End Function

  • perl 複数ファイルから一行ずつ読み込んで比較

    初心者向けのperl参考書がなんとか理解できる程度のperl初心者です。 一週間ほど思考錯誤してきたのですが、いくらスクリプトを書いてもどうしても自分では解決できない処理がありましたので、初めてなのですが、質問させていただきました。 二つの同じ形式の、一部情報だけ異なるファイルから一行ずつ配列を読み込んで、数値の大小を比較したいのですが・・・ ファイル構造は、下のように2行でひとつのtextデータの情報を表示する形式となってまして、 奇数行には、各textファイルの情報が、.以下の部分に4552221.2:(30.2):100、のように記載されています。 偶数行には、各テキストファイルの、IDとなる情報が、13333331のように記載されています。この奇数行と、偶数行一行ずつで、ひとつのtextデータの 情報を表しています。textというファイルは、text1から順に,text2000000まで、 2000万程度,行で言えば4000万行ほど存在しています。よって、file1もfile2も、同じ行であれば、同じtextで、同じIDのものを示しています。ずれはありません。 file1 ----------------------------- >text1. 4552221.2:(30.2):100 13333331 >text2 87999999 >text3. 3444444.1:(20.0):300 75533333 ----------------------------- 数値は意味が変わらない範囲で、比較しやすい数値に変えてあります。 この上のfile1と、下のfile2を比べたいのですが、 file2 ----------------------------- >text1. 4552221.2:(20.9):100 13333331 >text2 87999999 >text3. 3444444.1:(23.3):300 75533333 ----------------------------- 偶数行のtextファイルの欄が大事で、text名のドット(.)の後に、続けて数値が書いてある場合(上ではtext1とtext3が該当)、そのドットの後の括弧()で囲まれた中の数値の大小を比較して、 差が一定以上あるtextだけを出力するスクリプトが書きたいと思っているのですが、 これをいきなりすべてひとつのスクリプトにまとめるのは、私の知識と力量では到底無理なので、ひとつひとつ段階を踏んで処理していこうと考えました。 1、奇数行の、text.の後半に情報があるもの場合、tempファイルにその奇数行と、対になる偶数行を出力する。それを、file1、file2、個別に行う。(temp1、temp2を出力) file1で取り除かれる3、4行目のtext2は、file2でも必ず取り除かれるので、1の処理後も、file1と2の各行は、比較することが可能な状態です。 2、正規表現を使って、各行の()で囲まれた部分の最初の2桁の数字(一部は一桁の数字の場合もあり)、をtempに出力する。(temp3、temp4を出力) (この処理を行わなくても可能かもしれませんが、ややこしいので、数字だけ出すようにしました) 最後に、file1とfile2の各行の数字を一行ずつ読み込んで、数値に一定以上の差がある行の情報だけ出力したいのですが、各行を順番に分析できる方法は、while文か、配列に読み込む方法しか知りません。 前者のwhile文では、ファイルオープンは、ひたつ以上は同時には取り扱えないという情報を得たので、使えない思っています。後者の配列に読み込む方法は、桁が大きいので、実用的ではないと感じています。 二つ以上のファイルの各行の特定の数値データを、一行ずつ順に比較して、差があるものだけ抽出するにはどのようなスクリプトを書けばよいのか、ご教授下さい。 いろいろ調べましたが、(僕の調べ方が悪いと思いますが)適切なコマンドや方法にたどり着けません。 試してみた方法 ファイルハンドルを二つ指定して、while文の条件中に、andで条件を二つ指定してファイルハンドルから読み込んでやればよいと思ったのですが、実行するとエラーになってしまいます。ググっていろいろ調べてみたところ、ファイルハンドルの二つ指定はできないとの記述を見つけたので、whileの条件に複数のファイルハンドルを記述するこの方法はあきらめて、ここで、ストップしています。 まわりに、perlを扱える方がいらっしゃれば質問に伺うのですが。もしよろしければ、簡単でもご教授いただけますと幸いです。宜しくお願い申し上げます。

    • ベストアンサー
    • Perl
  • ファイルを比較して検索するソフト

    ハードディスク内で、画像、文書、ソフトなどにおいて、ファイル名は異なっているものの、同一ファイルを見つけ出す方法として、diff コマンド(-r オプションで、フォルダ又はディレクトリ単位で比較。テキスト、バイナリのどちらでも比較可。違う場所があれば、その場所と内容も表示される。元々は Unix 系のコマンド)と同じような機能のあるWindows用ソフトを知っている方がおりましたら教えてください。

  • テキストファイルを比較して差分だけを抜き出して表示させたい。

    2つのテキストファイルを比較をして、異なるデータのみを抽出して(できれば別のファイルで)表示させたいのですが、よいエディタやコマンドなどありますでしょうか?? サクラエディタを使って差分表示をさせたのですが、ほぼすべての行に「!」が表示されてしまい、困っています。よろしくおねがいいたします。

専門家に質問してみよう