パワーシェルで検索条件を保存し、再利用できるGUIアプリを作ろう


前回の記事では、PowerShellで検索結果をExcelに出力する方法を紹介しました。今回は、その検索条件を保存して再利用できる機能を追加し、より便利にします。

この機能を使えば、毎回設定を入力しなくても、以前の検索条件を自動的に読み込んでくれるので、時間を節約できます。


できること

  • 検索条件(フォルダ、キーワード、拡張子)を保存
  • 次回アプリ起動時に、保存された検索条件を自動で読み込み
  • 保存・読み込みボタンで簡単に操作

保存する方法(簡単な設定ファイルを使う)

今回は、検索条件をJSONファイルに保存し、次回アプリ起動時にその内容を読み込む仕組みを作ります。


スクリプト全体(保存&読み込み機能追加)

Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing

$form = New-Object System.Windows.Forms.Form
$form.Text = "検索条件保存ツール"
$form.Size = New-Object System.Drawing.Size(550, 500)

# 保存するファイルパス(設定ファイル)
$settingsFile = "$env:USERPROFILE\Documents\search_settings.json"

# ラベルとテキストボックス:検索フォルダ
$lblFolder = New-Object System.Windows.Forms.Label
$lblFolder.Text = "検索フォルダ:"
$lblFolder.Location = New-Object System.Drawing.Point(10, 15)
$form.Controls.Add($lblFolder)

$txtFolder = New-Object System.Windows.Forms.TextBox
$txtFolder.Text = "C:\Users\Public"
$txtFolder.Size = New-Object System.Drawing.Size(350, 20)
$txtFolder.Location = New-Object System.Drawing.Point(100, 10)
$form.Controls.Add($txtFolder)

$btnBrowse = New-Object System.Windows.Forms.Button
$btnBrowse.Text = "選択"
$btnBrowse.Location = New-Object System.Drawing.Point(460, 10)
$btnBrowse.Size = New-Object System.Drawing.Size(60, 25)
$form.Controls.Add($btnBrowse)

# ラベルとテキストボックス:キーワード検索
$lblKeyword = New-Object System.Windows.Forms.Label
$lblKeyword.Text = "ファイル名に含む文字:"
$lblKeyword.Location = New-Object System.Drawing.Point(10, 50)
$form.Controls.Add($lblKeyword)

$txtKeyword = New-Object System.Windows.Forms.TextBox
$txtKeyword.Location = New-Object System.Drawing.Point(150, 45)
$txtKeyword.Size = New-Object System.Drawing.Size(200, 20)
$form.Controls.Add($txtKeyword)

# ラベルとテキストボックス:拡張子
$lblExt = New-Object System.Windows.Forms.Label
$lblExt.Text = "拡張子(例:.txt):"
$lblExt.Location = New-Object System.Drawing.Point(10, 80)
$form.Controls.Add($lblExt)

$txtExt = New-Object System.Windows.Forms.TextBox
$txtExt.Location = New-Object System.Drawing.Point(150, 75)
$txtExt.Size = New-Object System.Drawing.Size(100, 20)
$form.Controls.Add($txtExt)

# 検索結果表示用リストボックス
$listBox = New-Object System.Windows.Forms.ListBox
$listBox.Location = New-Object System.Drawing.Point(10, 120)
$listBox.Size = New-Object System.Drawing.Size(510, 200)
$form.Controls.Add($listBox)

# 検索ボタン
$btnSearch = New-Object System.Windows.Forms.Button
$btnSearch.Text = "検索"
$btnSearch.Location = New-Object System.Drawing.Point(400, 70)
$btnSearch.Size = New-Object System.Drawing.Size(120, 30)
$form.Controls.Add($btnSearch)

# 保存ボタン
$btnSave = New-Object System.Windows.Forms.Button
$btnSave.Text = "条件保存"
$btnSave.Location = New-Object System.Drawing.Point(200, 420)
$btnSave.Size = New-Object System.Drawing.Size(120, 30)
$form.Controls.Add($btnSave)

# 読み込みボタン
$btnLoad = New-Object System.Windows.Forms.Button
$btnLoad.Text = "条件読み込み"
$btnLoad.Location = New-Object System.Drawing.Point(330, 420)
$btnLoad.Size = New-Object System.Drawing.Size(120, 30)
$form.Controls.Add($btnLoad)

# 保存処理
$btnSave.Add_Click({
    $settings = @{
        Folder   = $txtFolder.Text
        Keyword  = $txtKeyword.Text
        Ext      = $txtExt.Text
    }
    $settings | ConvertTo-Json | Set-Content $settingsFile
    [System.Windows.Forms.MessageBox]::Show("検索条件を保存しました")
})

# 読み込み処理
$btnLoad.Add_Click({
    if (Test-Path $settingsFile) {
        $settings = Get-Content $settingsFile | ConvertFrom-Json
        $txtFolder.Text = $settings.Folder
        $txtKeyword.Text = $settings.Keyword
        $txtExt.Text = $settings.Ext
        [System.Windows.Forms.MessageBox]::Show("検索条件を読み込みました")
    } else {
        [System.Windows.Forms.MessageBox]::Show("保存された設定がありません")
    }
})

# 検索処理(省略)

# フォーム表示
$form.ShowDialog()

実行結果

  1. 条件保存ボタンで、現在入力された検索条件(フォルダ、キーワード、拡張子)を保存
  2. 次回アプリ起動時に条件読み込みボタンで保存された設定を自動読み込み
  3. これにより、毎回設定を手動で入力せずに済むようになります!

活用アイデア

  • よく使う検索条件を保存しておき、業務のたびに簡単に再利用
  • 定期的なファイルチェック時に、以前と同じ条件での検索を素早く実行
  • 「条件セット」を複数保存して、いろんな場面で切り替えて使う

まとめ

検索条件の保存と再利用機能を使うことで、毎回同じ設定を手動で入力する手間が省け、効率的に作業を進められます。PowerShellのGUI機能を活用すれば、簡単に実用的なツールを作成でき、業務の生産性が大きく向上します。

次回は、さらに複雑な検索条件の追加や、より詳細なデータ出力に挑戦していきましょう!


コメント

タイトルとURLをコピーしました