- 締切済み
Windows用ファイル比較プログラム
Windows用のファイル比較を探しています。 要件は以下のとおりです。 ・コマンドラインインターフェイスであり、完全無人バッチ処理ができる ・サブディレクトリを再帰的に比較をする ・ERRORLEVELで一致しているか一致していないか判別できる ・VB等外部ランタイムを使用しないもの ・2Gbytes以上のファイルも正常に比較できること ・タイムスタンプの比較をオプション等で無視できること ・可能であれば、64bitネイティブがあること タイムスタンプの比較、2Gbytes以上のファイル以外の機能であれば fcmp32 が該当していて、使えましたが 2Gbytes以上のファイルがかなり多くなってきてエラーが出てきています。 fc.exe は、ディレクトリ名の指定方法により、File not found (Directoryではなく)に なってしまい、比較ができません。 現在、代替えで、WinMergeを使用していますが、GUI故・・・ よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- 5S6
- ベストアンサー率29% (675/2291)
サブディレクトリは確かにできなかったみたいですね。 c++で再帰プログラムを作って、fc呼び出すとかでどうでしょうか? c++の再帰は検索すればいくらでも出てくるのでコピペで済むと思います。 スタティックリンクすれば単体で動きます。 または自分で作ってしまう。 ・・・で。
- 5S6
- ベストアンサー率29% (675/2291)
こんなんでどうでしょうか? ESCコードの制限があるので全角変換してあります。 1ファイルずつ停止しているので不要ならpauseしなければいいだけです。 適当に改造してください。 fcb.bat --------------------------------- @echo off echo ファイルを比較をします。 pause for %%A in (”R:¥比較元dir¥*.*”) do ( rem echo %% ̄fA for %%B in (”R:¥比較先dir¥*.*”) do ( rem echo %% ̄fB fc /b %% ̄fA %% ̄fB pause ) )
- 5S6
- ベストアンサー率29% (675/2291)
半分の確立でFile not foundっておかしくないですか? Echoで表示させて、失敗したファイル名をコピペしてcopyなり してみてください。ダメならプログラム、バッチファイルの問題です。 あとは特殊文字とか文字コードの問題でしょうか。 C,C++の場合は、読み込み方法によって速度が大きく違いますね。 作って。の場合は別に質問した方がいいと思います。
補足
ありがとうございます。 普通に、(あくまでサンプルです) dir z:\abc dir z:\def とやって、ディレクトリの内容がきちんと表示されるのに fc /b z:\abc\*.* z:\def\*.* とやって、両方検索されたり、不安定だったり、File not found であったりすることがあります。
- 5S6
- ベストアンサー率29% (675/2291)
PowerShellで Get-ChildItem と FC でバッチファイル作るか または参考程度にハッシュ値比較で http://social.technet.microsoft.com/Forums/ja-JP/powershellja/thread/e5f1a7e6-156f-470b-a51e-65829883aed1/ File not found は""で囲んでないから発生?
お礼
ありがとうございます。 powershellはまったく使い方がわからないので、 やるとしたら、VBScriptかC(C++ではない)のが速くなってしまいます。 また、File not foundは、"" で囲んでいても、なってしまいます。 ※実際は、実行すると、半分の確率でFile not foundになります。
お礼
ありがとうございます。 これですと比較元¥*.* のみで、それ以下のサブディレクトリが 再帰できないようです。