これまでの連載では、PowerShellで作るGUIファイル検索アプリの基本〜条件保存までを解説しました。
今回はその応用として、更新日(作成日・変更日)やサイズなどの高度な条件を指定して検索できるようにします。
追加する検索条件
- 更新日以降 / 以前(例:「2024年1月1日以降に更新されたファイル」)
- ファイルサイズ(例:「1MB以上のファイルのみ」)
- 条件の有無はチェックボックスでON/OFF切替可能
高度検索UIの一例(GUI)
条件 | 入力方法 |
---|---|
更新日以降 | 日付入力ボックス(DateTimePicker) |
更新日以前 | 日付入力ボックス |
ファイルサイズ以上 | 数値(KB/MB) |
ファイルサイズ以下 | 数値 |
チェックボックスで条件を有効化 | ONのときだけ反映 |
スクリプト例(抜粋)
GUIパーツの作成(例:日付条件とサイズ条件):
# 更新日以降(From)
$chkDateFrom = New-Object System.Windows.Forms.CheckBox
$chkDateFrom.Text = "更新日以降"
$chkDateFrom.Location = New-Object System.Drawing.Point(10, 330)
$form.Controls.Add($chkDateFrom)
$dateFrom = New-Object System.Windows.Forms.DateTimePicker
$dateFrom.Format = 'Short'
$dateFrom.Location = New-Object System.Drawing.Point(120, 328)
$form.Controls.Add($dateFrom)
# 更新日以前(To)
$chkDateTo = New-Object System.Windows.Forms.CheckBox
$chkDateTo.Text = "更新日以前"
$chkDateTo.Location = New-Object System.Drawing.Point(270, 330)
$form.Controls.Add($chkDateTo)
$dateTo = New-Object System.Windows.Forms.DateTimePicker
$dateTo.Format = 'Short'
$dateTo.Location = New-Object System.Drawing.Point(380, 328)
$form.Controls.Add($dateTo)
# ファイルサイズ以上
$chkSizeMin = New-Object System.Windows.Forms.CheckBox
$chkSizeMin.Text = "サイズ以上(KB)"
$chkSizeMin.Location = New-Object System.Drawing.Point(10, 360)
$form.Controls.Add($chkSizeMin)
$txtSizeMin = New-Object System.Windows.Forms.TextBox
$txtSizeMin.Location = New-Object System.Drawing.Point(120, 360)
$form.Controls.Add($txtSizeMin)
# ファイルサイズ以下
$chkSizeMax = New-Object System.Windows.Forms.CheckBox
$chkSizeMax.Text = "サイズ以下(KB)"
$chkSizeMax.Location = New-Object System.Drawing.Point(270, 360)
$form.Controls.Add($chkSizeMax)
$txtSizeMax = New-Object System.Windows.Forms.TextBox
$txtSizeMax.Location = New-Object System.Drawing.Point(380, 360)
$form.Controls.Add($txtSizeMax)
検索ロジックの追加(Get-ChildItem + Where-Object)
$files = Get-ChildItem -Path $folder -Recurse -File -ErrorAction SilentlyContinue |
Where-Object {
($_ -match $keyword) -and
($ext -eq "" -or $_.Extension -eq $ext) -and
(
(!$chkDateFrom.Checked -or $_.LastWriteTime -ge $dateFrom.Value) -and
(!$chkDateTo.Checked -or $_.LastWriteTime -le $dateTo.Value) -and
(!$chkSizeMin.Checked -or $_.Length -ge ([int]$txtSizeMin.Text * 1024)) -and
(!$chkSizeMax.Checked -or $_.Length -le ([int]$txtSizeMax.Text * 1024))
)
}
実行結果
- 「1MB以上で、2024年以降に更新された.txtファイルだけを抽出」
- 日付やサイズの範囲を自由に切り替えられる
- 条件を組み合わせてピンポイント検索が可能
活用例
- 古くなったファイルだけを抽出して整理
- 一定サイズ以上の動画・画像ファイルを見つけて容量チェック
- 変更日が最近のファイルだけを一覧にして報告書に貼り付け
まとめ
PowerShellのGet-ChildItem
とWhere-Object
を活用すれば、**業務で必要な「実用的なファイル検索ツール」**がGUI付きで誰でも使える形で作成可能です。
次回は、この検索アプリに検索結果をダブルクリックでファイルを開く機能や、右クリックメニューでファイル操作などを加え、さらに便利なツールに仕上げていきましょう!
コメント