こんにちは、NK University の松田です。
今回は、Powershellでファイル選択ダイアログを使う方法をご紹介します。
Powershellを実行する際、読み込むファイルのパスが毎回異なる場合などに有効な手段です。
基本的には以下のような形になります。
PowerShell
Add-Type -AssemblyName System.Windows.Forms
$dialog = New-Object System.Windows.Forms.OpenFileDialog
$dialog.InitialDirectory = "Path\To\Folder" #初期フォルダ
$dialog.Filter = "All files (*.*)|*.*" # フィルタ設定
if ($dialog.ShowDialog() -eq [System.Windows.Forms.DialogResult]::OK) {
$filePath = $dialog.FileName
Write-Output "選択されたファイル: $filePath"
}
$dialog.Dispose()ただし、VS Codeを使用されている方はうまく動作しないので注意してください。
STAスレッドで実行する必要があり、VS Code ではMTAスレッドであるため不具合を起こすようです。
実行の際はPowershell ISE 等で実行するようにしてください。
よく使うオプション
InitialDirectory – 初期フォルダの設定
PowerShell
$dialog.InitialDirectory = "Path/To/Dir"でダイアログを開いた際の初期フォルダを指定できる。
パスが存在しなければ無視される。
Filter – 拡張子フィルタ
書式としては
PowerShell
表示名1|フィルタ1|表示名2|フィルタ2のように記載します。
複数フィルタを指定するにはセミコロンで区切って*.jpg;*.pngのようにします。
Multiselect – 複数ファイルの選択
ファイルを複数選択できるようにするには
PowerShell
$dialog.Multiselect = $trueと設定します。また、選択したファイル名は配列で取得することができます。
PowerShell
$dialog.FileNames