FrontPage
WDSgrep
A Simmple Command Line Interface for Windows Desktop Search
A indexed-search backend for Mew on Windows
これはなに?
Windows Desktop Search (WDS) あるいは Windows Search (Ver 4 以降の名称) を使ってファイル全文検索を行うコマンドラインツールです。
検索ワードを引数にコマンドラインから実行すると、ワードにマッチするファイルのパスを標準出力に吐き出します。
主に、Emacs上のメールリーダである Mew において、メール全文検索のバックエンドとして利用することを想定しています。
Example
"license" という文字列を含むテキストファイルを、全ハードディスク内から検索した例です。実際にはもっと沢山マッチするでしょうが、いずれにしてもほぼ一瞬から5秒以内に検索結果が出力されます。
% wdsgrep.exe license -e txt C:\Program Files\Adobe\Acrobat 7.0\Reader\plug_ins\PictureTasks\OLS\Locale\ENU\Terms of Use.txt C:\Program Files\Java\jre1.5.0_04\README.txt C:\Program Files\Google\Google Earth\GPL.txt C:\Program Files\Google\Google Earth\license.txt C:\Program Files\Google\Google Earth Plus\GPL.txt C:\Program Files\Google\Google Earth Plus\license.txt C:\Program Files\Java\jre1.5.0_04\THIRDPARTYLICENSEREADME.txt C:\Program Files\Real\RealPlayer\RealNetworks License.txt C:\Program Files\Opera\uninst\backup\License.txt C:\Program Files\Opera\License.txt
ダウンロード
バイナリおよびソースファイルが以下の場所にあります。
実行には以下の環境が必要です。
- Windows XP 以上 (Vista等含む)
- Widows Desktop Search ver. 3.x or Windows Search 4.x (Windows Update でも入手できます)
- Microsoft .NET Framework 2.0 以上 (Windows Update でも入手できます)
変更履歴
- 2006-03-31: -p でマイドキュメント以下を指定すると、検索に引っかからないケースがあったので修正。
- 2006-04-01: 出力の改行を CRLF から LF に変更。
- 2006-04-21: WDS へ拡張子を登録する機能を追加 (-R)。
- 2006-06-14: デフォルトのソートをランク順から日付降順に変更。また、ソートする列を選べるように (-S)。
- 2006-12-10: WDS 3.0 (on Windows XP) に対応。
- 2007-03-28: -p の動作を変更(特定の条件で検索できなかった現象を解消)
- 2007-04-08: -R の動作のバグを修正
- 2009-03-25: 長らくソート (-S) が動いていなかったのを修正。WDS 3.x 以上の対応に限定。
2006-12-10 以降のバージョンでは WDS 3.0 (on Windows XP) の環境でも検索できるようになりました。
2009-03-25 メンテの都合で WDS 3.0 以降のサポートのみとしました。WDS 2.x を使わざるを得ない人(Windows 2000など)は wdsgrep 2.x を使ってください。
使い方
普通のコマンドラインツールとして使う場合:
options: -p <path> Results are limited in the absolute path
-e <ext> Results are limited to files with the extention '.ext'
-E <regexp> Limit to regular expression (overrides -p and -e)
-S <columns> Sort by the column. Add DESC for reversed output
A comma separated list of columns is also available
Default: sort by date (-S 'System.ItemDate DESC')
-Sr Sort by rank (-S 'System.Search.Rank DESC')
-m Mew mode (equivalent to '-e mew')
-s Use slash instead of backslash for path delimiter
-q (ignored for compatibility)
-R [dst=src] Register '.dst' to WDS as the same file type of '.src'
Default: mew=eml; register .mew files as .eml (e-mails)
現状、-P は動いていないかもしれません。また、-R (拡張子登録) には管理者権限が必要と思われます。
Windows Search 4.0 の環境では未だあまりテストしていません。 検索などの最低限の動作は動いている模様ですが、-R (拡張子登録) あたりは動いていないかもしれません。
Mew からの利用方法
注意: Mew 5.1 以上が必要です。
注意: 拡張子 ".mew" が付いていないメールは検索対象になりません。
大まかに以下の手順が必要です。
- Mew 5 以降のインストール
- WDS のインストール
- wdsgrep.exe をどこかに置く
- Mew の設定
インストール
Mew 5.1 以上が必要です。
WDSgrep については、zip に含まれる wdsgrep.exe と WDSQuery.dll を PATH の通った同じディレクトリに置いてください。
wdsgrep.exe は .NET 2.0(以上) 用のバイナリです。.NET 2.0以上を Windows Update 等からインストールして利用してください。
設定・準備
PATH の通ったところに wdsgrep.exe (と Microsoft.Search.Interop.dll) が置いてあればほとんど設定は不要です。
Mew がメールに拡張子 ".mew" を付けるために、以下を .mew or .emacs に設定してください。
(setq mew-use-suffix t)
この設定で ".mew" が付くのは新しくやってきたメールのみであることに注意してください。 古いメールに関しては自力で ".mew" にリネームしてやる必要があります。詳しいやり方はこちらを参照してください。
環境によっては(特に gdsgrep.rb と共存させる場合には)以下の設定も必要です。
(setq mew-search-method 'wds)
インデックス登録
Mew の summary mode で "k M" とするだけです(一度だけ)。あるいはコマンドラインから "wdsgrep.exe -R" を実行してください。WDS 3.0 の環境ではこの操作に管理者権限が必要かもしれません。内部的にはこのようなことをやっています。
拡張子が登録された後、WDS はバックグラウンドでメールをインデックスに登録します。WDS はコンピュータがアイドル状態にならないとインデックス登録を開始しないため、全メールが検索対象になるまでには暫くの時間がかかります。すぐにインデックス登録して欲しい場合は、WDSのタスクトレイアイコンから「今すぐインデックスを作成」を選んでください。
検索
主な使い方 (Mew の summary mode で):
k / 全フォルダから検索ワードにマッチするメールを探して Virtual Folder を作ります。 k ? 現在のフォルダで検索ワードにマッチするメールに '*' マークを付けます (pick)。 k c 検索スキームの切り替え。WDS や Namazu,Google Desktop 等を手動で切り替えられます。
是非お試しあれ。
Tips
メールがたくさんヒットしてしまうと、k / で作る Virtual Folder のスキャンに時間がかかります。そういうときは検索キーワードに日時修飾(date:今月 や after:2006/01 など)を追加してヒットするメール数を抑えてやると良いでしょう(→WDSでの高度な検索)。また、Mew の M-p, M-n でキーワードをハイライトしながら読み進めていくのも便利です。
うまくいかないときは
まずは Mew の外で検索できるか確かめてください。
コマンドプロンプトから
% wdsgrep.exe mail -e mew
としてみて、.mew ファイルのパスが出力されるなら Mew の設定の問題です。
何も表示されない、あるいはエラーダイアログが出る場合、次のことを確認してみてください。
- .NET framework の初期化エラー(ダイアログ)が出る
- .NET framework 2.0 をインストールしてください (Windows Update)
- アプリケーションでハンドルできない例外と言われる(ダイアログ)
- WDSQuery.dll を wdsgrep.exe と同じところに置いてください
- その他
- Windows Desktop Search がちゃんとインストールされているか確認してください。標準の GUI で検索できるか確認してください。
いろいろな検索
WDS における詳細な検索オプションについてはこちらから。
リンク
- gdsgrep
- Google Desktop を使ってファイル全文検索を行うツールです。MH 形式のメールファイルを GD のインデックスに個別に登録する機能も持ちます。WDSgrep を作ろうと思ったのも、gdsgrep によって Mew に検索機能が整備されたおかげです。北口さんに感謝。
- Mew
- Windows Search
- Windows Search 4.0 の日本語記事@窓の杜
- Windows Desktop Search 3.01(単体)
- Windows Desktop Search 2.6.6(単体)
- Additional Information on WDS API
- Google Desktop Search with wanderlust
- (参考)gdsgrep.rb は wanderlust からも使えるようです。
Keyword(s):
References: