• ベストアンサー

ファイル1とファイル2の

内容が等しいか等しくないかを検出することができるWindowsAPI関数を探しています。 例えばc:\x.txtとc:\Windows\y.exeの内容が等しいかどうかです。 作るのは簡単ですが有れば便利です。 そのような関数が有れば教えてください。

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

  • ベストアンサー
  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.2

>1コマンドでできればこれほど便利なことはないからです すでに、ご存じかもしれませんが、 コマンドでよければ、fcコマンドがあります。 DOS窓で fc /b fileA fileB と入力すると 違いがチェック出来ます。 このコマンドの詳細は fc /?と入力してください。

keyguy
質問者

お礼

ありがとうございます。 残念ながらWindowsアプリに組み込むつもりであり単発でコマンドでチェックするものではないのです。 dosコマンドとして使うのならば一度作って格納すれば以後使えるので作ったらおしまいですから作ります。 (実は作って使っています。)

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • VitaminBB
  • ベストアンサー率10% (17/165)
回答No.1

回答ではないので、申し訳有りませんが。。。 >作るのは簡単ですが有れば便利です。 ”じゃあ作れば”って気持ちになり回答したく無くなります。 すなおにどうして必要かを書かれてほうがレスが付きやすくなると思います。

keyguy
質問者

お礼

ありがとうございます。 一応作ったのですが管理が大変ですし1コマンドでできればこれほど便利なことはないからです。 以下のようになりました。 ルーチンワークであるものを毎回打ち込むのは大変です。 int FuncComp(const string& arg0,const string& arg1) { int i,j,k; ifstream ifs0,ifs1; char buffer0[256],buffer1[256]; ifs0.open(arg0.c_str(),ios::in|ios::binary); if(!ifs0.is_open())return 1; ifs1.open(arg1.c_str(),ios::in|ios::binary); if(!ifs1.is_open()){ifs0.close();return 1;} k=0; do { ifs0.read(buffer0,256); ifs1.read(buffer1,256); if((i=ifs0.gcount())==(j=ifs1.gcount())) { for(j=0;j<i;j++)if(buffer0[j]!=buffer1[j]){k=2;break;} } else k=2; if(ifs0.bad()!=0 || ifs1.bad()!=0)k=2; if(ifs0.eof()!=0 && ifs1.eof()==0)k=2; if(ifs0.eof()==0 && ifs1.eof()!=0)k=2; }while(k==0 && ifs0.eof()==0 && ifs1.eof()==0); ifs0.close(); ifs1.close(); return k; }

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ファイルやディレクトリに

    空白を含む名前を付け それをドラッグして実行するプログラムgoo.exeを作ったのですが GetCommandLine()で ファイル”x y.txt”をドラッグしてgoo.exeを実行すると GetCommandLine()が ”goo.exe” x y.txt となるので xとy.txtの2つを受け取ってしまいます 98ならばxy~2.txtと名前が変更されるのでいいのですが95だと名前が変更にならない場合があり上記のようなったりします GetCommandLine()を使ってどのように空白付き名前のファイルを受け取ればいいのでしょうか? あるいはGetCommandLine()は上記のような致命的欠陥のため別のC言語用API関数が用意されているのでしょうか?

  • ディレクトリ、ファイルの存在確認法は?

    windowsAPIアプリにおいて (1) ディレクトリc:¥gooが有るかないか知る方法は FindFirstFile を使う方法がありますがもっと簡単にできる関数はないのでしょうか? (2) ファイルc:¥goo.txtが有るかないか知る方法は FindFirstFile を使う方法と openしてみて開くかどうか見る方法が有りますがもっと簡単にできる関数はないのでしょうか? is_exist(”c:¥¥goo”) is_exist(”c:¥¥goo.txt”) が真ならば存在し偽ならば存在しないといったような関数です (1)だけあるいは(2)だけでも知っていれば教えてください

  • ファイルのコピーについて

    RHEL6で、ファイルをコピーする際に以下の2通りのコマンドがあります。 --------------------- #x.txt ファイル内容の出力結果をy.txt に出力 cat x.txt > y.txt #x.txt ファイルをy.txt としてコピーする cp x.txt y.txt --------------------- 前者と後者では、効率的にはどちらも同じでしょうか。 cat(もしくはcp )を使う方がよいという場合、その理由を教えていただけますか。 お願いします。

  • 消失したプログラムファイル

    あまりPCに詳しくないのでどなたかお分かりになりましたらぜひ教えて下さい。 自分が何かをいじってしまい(原因は特定できませんが)最近PCの調子が悪く、OSのセットアップからやり直しました。 一通り終わったところで、ソフトを使ってウィンドウズをチェックしたところ『自動修復できなかったか、または修復状態が判定不能です』という問題が2個検出されました。コメント内容は次のとおりでした。 『C:\WINDOWS\$NtUninstallKB898458$\ORUN32.EXE が必要なファイルにアクセスできません : "pctree32.dll.』 『C:\WINDOWS\$NtUninstallKB898458$\ORUN32.EXE が必要なファイルにアクセスできません : "learn32.dll.』 解決策がございましたら教えて下さい。よろしくお願いいたします。

  • AVG8.0でWinXpSP3のファイルが・・・

    AVG8.0にてコンピュータのスキャンを実行したところ、以下のファイルがウイルスとして検出されました。誤検出でしょうか? c:\WINDOWS\pchealth\helpctr\binaries\msconfig.exe WindowsXP-KB936929-SP3-x86-JPN.exe;\i386\msconfig.ex_:\msconfig.exe WindowsXP-KB936929-SP3-x86-JPN.exe;\i386\msconfig.ex_ WindowsXP-KB936929-SP3-x86-JPN.exe I-Worm/Brontok.KOというウイルス名で検出されました。 BrontokでGoogle検索したところ多数の結果が表示されましたが、 KOと付くものは見つかりませんでした。新種の亜種なのでしょうか? SP3のexeはMicroSoftからダウンロードしたものです。 同様にMicroSoftからダウンロードしたisoイメージで作成したSP3のCDをスキャンしたところ同様に検出されました。 他のBrontokの感染経路の情報ではEメールや偽装フォルダなどから感染するとありましたが心あたりはありません。 環境はWindowsXPpro SP3 AVG Anti-Virus Free 8.0.101です。 よろしくお願いします。

  • 絶対パスがx,y,zのファイル,ホルダを

    c:\p.exeにドラッグしてc:\p.exeを実行したとき [GetCommandLine()] はどのようになるのでしょうか? 98se 95 Borland C++5.5 Comlierでは ["c:\p.exe" x y z] になるのですが Windows2000 + SP3, VC++ 6.0では ["c:\p.exe" "x" "y" "z"] となるそうです Me,Xp,NT,2000でBorland c++5.5 Compiler ではどうのようになるのでしょうか?

  • ファイルから文字を読みとる。

    JAVAを勉強中でファイル入出力で困っているので教えて下さい。 あるファイル(sample.txt)があるとします。 [sample.txt] (0,0) (10,20) このファイルは(x座標,y座標)のフォーマットで1行に1座標が書き込まれているとします。 ここからx座標、y座標をそれぞれ変数x,yに代入することはできるのでしょうか? C言語だと ("%d,%d",&x,&y)のような形でそれぞれ読み書きできたと思うのですが、 while((x_data = input.readLine()) != null){  y_data = input.readLine();  area_data.addElement(new Area(x_data,y_data)); } というかたちで 0 0 10 20 と1行に1文字ずつしか読み書きできません。 ご存じの方は是非教えて下さい。 また、JAVAを勉強するためのおすすめサイト、書籍がありましたら教えて下さい。

  • C言語におけるtxtファイルの読み込みと出力

    環境:WinXP,Borland C++compiler 以下のようなプログラムを考えました。 ・sample.c #include <stdio.h> float func(float x,float y,float z); int main(void) { float x,y,z; scanf("%f",&x); scanf("%f",&y); scanf("%f",&z); printf("%f",func(x,y,z)); return 0; } float func(float x,float y,float z) { return x+y+z; }//ここまで。 例えば(x,y,z)=(1,2,3)と入力すると6が出力されます。 このプログラムを、任意のn組の(x,y,z)の記述されたテキストファイルを読み込んで出力outを計算し、別のテキストファイルにn組の(x,y,z,out)を書き込むようにするにはどのような変更を加えればよいのでしょうか。 具体例は以下のような感じです。用意しておいたinput.txtをsample.cで読み込んで計算し、また作成されていないoutput.txtに出力するのが目標です。 (n=3の場合) ・input.txt //x y z 1 2 3 1 8 9 -1 7 5 ・output.txt //x y z out 1 2 3 6 1 8 9 18 -1 7 5 11

  • バッチファイルでの計算方法

    一行のみのtxtファイル(1111.txt)に日付 スペース 時間 スペース 値 が格納されています。 バッチファイルにて上記値に定数(6666)をかけ単位を追加して出力(2222.txt)したいとおもいます。 以下のように書いてみましたが どこが悪いかよくわかりません。 どなたかお教えいただきたいと思います @ECHO OFF FOR /F "eol=# tokens=1,2,3" %%a in (1111.txt) SET /A x=6666 SET y=%%c*%x% DO ECHO %%a %%b %%y >2222.txt

  • バッチファイルでアクセス権無し時のファイル置き換え

    こんにちは。 Windows 7 x64に関して質問があります。バッチファイル(ex1.bat)を以下の様に作成しました。元のファイルをバックアップとって新しいファイルと入れ替えるバッチファイルです。 ex1.bat -------------------- copy "C:\Windows\System32\regedt32.exe" "C:\Windows\System32\regedt32_backup.exe" copy "C:\Windows\System32\myregedt32.exe" "C:\Windows\System32\regedt32.exe" -------------------- ですが上記のバッチファイルを実行しても「アクセスが拒否されました」と表示されて置き換えることが出来ません。 実はこの"C:\Windows\System32\"配下には複数のテストしてみたいファイルがあるので、バッチファイル1つで全て入れ替えが出来ることを狙っております。 どなたか対処方法をご存じないでしょうか?