C#アプリからWindows File Explorerでファイル検索結果を表示する

C#のアプリから品番で商品の写真を検索する等、時々WindowsのFile Explorerでファイルの検索結果を表示する必要があります。
アプリ自体は検索結果の表示機能を実装していない場合はWindowsのFile Explorerで検索結果を表示させるのが近道です。
今回はsearch-ms:プロトコルでの検索方法をメモします。

目次

C#からWindows File Explorerで検索結果を表示する

指定場所でkeywordを検索するC#サンプルコード

string keyword = ".cs"; string location = "E:\\test"; string queryString = $@"search-ms:query={keyword}&crumb=location:{location}"; ProcessStartInfo processStartInfo = new ProcessStartInfo(queryString); processStartInfo.UseShellExecute=true; Process.Start(processStartInfo);

構文説明

search-msプロトコル

search-ms:プロトコルを指定すれば、WindowsではデフォルトとしてFile Explorerで検索画面を開く。search:でも動くようです。

query=keyword

検索するキーワードを指定します。

crumb=location:E:\test

検索する場所を指定します。

他の例

編集された日付指定で検索

string queryString = $@"search-ms:query={keyword} datemodified:2021-11-05&crumb=location:{location}";

datemodified:todaydatemodified:yesterday等でも検索できるようですが、Windowsの言語によって挙動が異なる可能性があります(テストしていません)ので、日付の絶対値で無難だと思います。

編集された日付範囲指定で検索

string queryString = $@"search-ms:query={keyword} datemodified:2021-11-01..2021-11-05&crumb=location:{location}";

2021/11/1から2021/11/5の期間内に編集されたファイルを検索

ファイルの種類で検索

string queryString = $@"search-ms:query={keyword} kind:picture datemodified:2021-10-01..2021-10-31&crumb=location:{location}"

写真タイプのファイルを検索

検索方法をさらに広げる

実際にWindows Explorerの検索画面で、検索オプションでいろいろ検索の条件を変えられます。
その条件での検索構文は検索ボックスで見ることができます。
ただし、Windowsの言語によって構文が異なると記憶していますが、テストしていません。
他の言語のWindowsを使うユーザーがいる場合は要注意です。

Windows検索画面で検索オプションを見る

コメント

このブログの人気の投稿

C# WebView2.ExecuteScriptAsync()のいくつかの使い方とDebug方法

C# 外部ライブラリを使わずに半角→全角カタカナ変換

C# WebView2を通じてWebサーバーなしでJavaScriptからローカルファイルを読み書き