PowerToys *

本家製(だがサポートなし)の便利ユーティリティ。Tweak UIとか(窓の手に類似)。

入手 *

効用 *

ファイルの比較 *

動機 *

外部メディアに書き込んだ際など、「あるディレクトリ中に格納されているファイル(ディレクトリ)群が、他のディレクトリに格納されているものとバイナリレベルで同じか?」と思い、これを調べたくなることがある。

方法 *

全bitを調査すれば完璧にわかるのだが、これだと時間がかかる。同じかそうでないかだけわかればよいなら、MD5なんかのハッシュ値の比較だけを行えば充分。良く知らないが、偶然ハッシュが同じになってしまう確率はとってもとっても小さいのだろう。

専用のツールは恐らく数多くあるのだろうが、本家が配布するFCIVなんてのもあるので、これを使って試してみる。これの機能は

なんてところのようなので、上記の様なデータ比較のために充分な機能がある。

というわけで、こういった既存のコマンドを使うと楽だろうと思ってオプションなどを調べていたが、結局プログラム自作するのが総合的な手間では最適解と思えてきてしまった。まあ折角調べたことなのでメモしておくことにする。

実践 *

C:\mydata\important\{data1.txt, data2.pdf, ...} # 比較元
D:\mportant\{data1.txt, data2.pdf, ...}

なんてのを比較したいとする。パスは通ってるとする

方法1(正統派?) *

fciv.exe c:\mydata\important -bp c:\mydata\important -r -xml my_hash.xml

をまず打つ。これでimportant以下全てのファイルのハッシュがmy_hash.xmlに保存される。ファイルの場所の情報は、(この方法だと)相対パスとなる。この時のコンソールの出力は以下な感じ。

//
// File Checksum Integrity Verifier version 2.05.
//
Start Time: 03/08/2006 at 05h15'28''

Error loading XML document.
Create New XML database

End Time..: 03/08/2006 at 05h15'28''


        Processed 4 directories
        Processed 23 files
Errors have been reported to fciv.err

XMLが無いので新たに作ると言い、時刻をメモし、処理し、エラーをfciv.errに吐いたそうだ。だが実際にはfciv.errにはコマンドラインが書かれているのみだった。「エラーはありません」ということなのだと解釈しておく。ハッシュを見たいのなら

fciv -list -xml my_hash.xml

などとすればリスト表示される。

次に

fciv -v -bp d:\important -xml my_hash.xml

として比較を行う。成功すれば

//
// File Checksum Integrity Verifier version 2.05.
//
Starting checksums verification : 03/08/2006 at 05h23'45

All files verified successfully

End Verification : 03/08/2006 at 05h23'45

となり、失敗すれば

//
// File Checksum Integrity Verifier version 2.05.
//
Starting checksums verification : 03/08/2006 at 05h24'12

List of modified files:
-----------------------
data1.txt
        Hash is         : 81d95db337a18c65384d35ba7ea2efda
        It should be    : ee3d1c92cf3763f8f6550f0b3f3cf01d


End Verification : 03/08/2006 at 05h24'12

となる。パスのオプションをミスると「指定されたパスが見つかりません」と怒濤のように言われる。

あるべきファイルが無い場合には「指定されたパスが見つかりません」と言われるが、余計なファイルが比較先にあっても黙殺されてしまうのがちょっと残念。

fciv -list -xml my_hash.xml
fciv d:\important -r

とか、エクスプローラの右クリックとかでファイル名を数えたりすればOK?なんだかかっこ悪い。

方法2(邪道?) *

fciv.exe c:\mydata\important -bp c:\mydata\important -r -xml my_hash1.xml
fciv.exe d:\important -bp d:\important -r -xml my_hash2.xml

として

fciv.exe my_hash1.xml
fciv.exe my_hash2.xml

の出力を比べるなりdiffするなり(あれば)する。これも何だかかっこ悪い。

まあ、致命的な欠点でもないんだから、妥協しとく。

参考 *

ハッシュ値を利用してファイルの同一性をチェックする

タスクマネージャ *

Windowsが安定するようになってからはお世話になる事は少なくなったものの、重要なプログラムである。

コマンドラインが好き *

コマンドプロンプト *

UNIX環境 *

UNIX環境を実現したくばcygwinを使えばいいっちゃいいんだが、大規模すぎるし、UNIXとWindowsではそもそも前提条件が異なるので、何かと例外ルールに惑わされて面倒。

下記は、Windowsのルールに従いつつ、なるべくUNIXライクなコマンドラインのインターフェースを充実させようとする試み関連。

CD/FDDのイメージを作ったり読んだりするにはddコマンドが便利。cygwin環境には勿論あるが、そうでないWindows用のddコマンドもある。

dd if=\\.\a: of=FloppyImage.img
dd if=\\.\g: of=CDImage.iso

などとしてイメージが作れる。作ったイメージは、Daemon ToolsやらVMWareで活躍する。

また、本格的にUNIX環境の動作が欲しい時はリモートなりVMWareなり別パーティションなりに環境を用意する方がいいのかなあと考えつつ、まだ何もしていない。

UNIXとか関係なしの便利コマンド *

あまり関係ないけど、ext2を読めるカーネルモードドライバを見つけた

CraftLaunch *

キーボード指向のランチャ

あふ *

「超低機能二画面ファイラ」

FD-likeなファイラでは一番好き。

Paper Plane xUI *

こちらもFD-likeファイラ。Unicodeに対応してるのと、D&Dできる点が良い。

素材 *

firefox *

動作も軽快になり、洗練されてきた。

キーバインド *

Ctrl + Tab 次のタブ
Ctrl + Shift + Tab 前のタブ
Ctrl + [1-9] 数字に対応するタブを選択

タブを選択した状態(マウスでタブをクリック、もしくは{URL(Ctrl+L),検索(Ctrl+K)}エディットボックスからTabキーでタブにキーボードフォーカスを移す)なら

Ctrl + -> タブ右移動
Ctrl + <- タブ左移動