前回の記事では、PowerShellで簡単なGUIフォームを作る方法を紹介しました。今回はその応用編として、指定したフォルダ内のファイルを一覧表示し、選んで開けるGUIツールを作成します。
「フォルダ内のファイルを一括確認したい」「初心者でも簡単に使える操作画面を作りたい」——そんなときに便利なアプリです。
できること
- 指定フォルダ内のファイルを一覧表示
- ファイルをダブルクリックして開く
- ボタンでフォルダを変更できる
スクリプト全体(基本バージョン)
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(500, 400)
# フォルダパス入力用テキストボックス
$textBox = New-Object System.Windows.Forms.TextBox
$textBox.Text = "C:\Users\Public\Documents"
$textBox.Location = New-Object System.Drawing.Point(10,10)
$textBox.Size = New-Object System.Drawing.Size(350, 20)
# フォルダ選択ボタン
$btnBrowse = New-Object System.Windows.Forms.Button
$btnBrowse.Text = "変更"
$btnBrowse.Location = New-Object System.Drawing.Point(370, 8)
$btnBrowse.Size = New-Object System.Drawing.Size(100, 25)
# ファイルリスト表示用リストボックス
$listBox = New-Object System.Windows.Forms.ListBox
$listBox.Location = New-Object System.Drawing.Point(10, 40)
$listBox.Size = New-Object System.Drawing.Size(460, 300)
# ファイル読み込み処理
function Load-Files {
$listBox.Items.Clear()
$folder = $textBox.Text
if (Test-Path $folder) {
$files = Get-ChildItem $folder -File
foreach ($f in $files) {
$listBox.Items.Add($f.FullName)
}
}
}
# フォルダ変更処理
$btnBrowse.Add_Click({
$dialog = New-Object System.Windows.Forms.FolderBrowserDialog
if ($dialog.ShowDialog() -eq "OK") {
$textBox.Text = $dialog.SelectedPath
Load-Files
}
})
# ファイルをダブルクリックで開く
$listBox.Add_DoubleClick({
$selected = $listBox.SelectedItem
if ($selected) {
Invoke-Item $selected
}
})
# 初期読み込み
Load-Files
# コントロール追加
$form.Controls.Add($textBox)
$form.Controls.Add($btnBrowse)
$form.Controls.Add($listBox)
# フォーム表示
$form.ShowDialog()
実行結果
- 起動すると、指定フォルダ内のファイル一覧が表示されます
- 任意のファイルをダブルクリックすると、既定のアプリで開くことができます
- 「変更」ボタンで別のフォルダも選択可能です
活用例
- 作業フォルダのファイルを簡易ビューアで管理
- 定型の報告書・テンプレートの一括確認
- 非エンジニア向けにファイル選択ツールを配布
まとめ
PowerShellを使えば、GUIを備えた簡易ファイルマネージャのようなツールも簡単に作れます。エクスプローラーを使わずに、目的のフォルダにあるファイルをすぐに開けるので、業務効率もアップします。
次回は、複数条件でファイルを検索できるPowerShell GUI検索ツールを紹介予定です!
コメント