以前 anything.elでファイル検索(Windowsの場合) という記事でADO経由で検索するプログラム(20100701_winsearch.cpp)を作ったのですが、もう少し汎用的なものを作ってみました。
misohena/adoquery: Windows ADO Query Command
これ(adoquery.exe)を使うとSQLベースクエリを直接書けます。
例えば
- ファイル名にhelloを含む
- テキストカラム(タイトルや内容)にhelloを含む
ファイルを検索するには次のようにします。
adoquery /conn "Provider=Search.CollatorDSO;Extended Properties='Application=Windows';" /query "SELECT TOP 10 System.ItemFolderPathDisplay, System.FileName FROM SystemIndex WHERE (System.FileName Like '%hello%') or Contains('hello')" /format "%1%\\%2%" /header ""
SQLの詳しい書き方は次のページに書いてあります。
Querying the Index with Windows Search SQL Syntax - Windows applications | Microsoft Docs
Using SQL and AQS Approaches to Query the Index にも書いてありますが、クエリを投げられれば言語は何でも良いです。今回はC++&ADOでやりましたが、VBScriptの例なんかも載ってます。