昨日の「[Tips] ファイル選択ダイアログを使用する」に引き続き、PowerShell でファイル保存ダイアログを使用できるようにする関数を作成しました。
下記がそのコードです。
function global:Save-FileDialog( [string]$Path = ".", [string]$Filter= "全てのファイル(*.*)|*.*", [string]$DialogTitle, [switch]$Alert) { <# .SYNOPSIS ファイル保存ダイアログを表示します .DESCRIPTION ファイル保存ダイアログを表示し、ユーザーにファイル名を入力させます .PARAMETER Path 初期ディレクトリを指定します。指定しなかった場合はカレントディレクトリとなります。 .PARAMETER Filter 入力できるファイルの種類を指定します。 .PARAMETER DialogTitle ダイアログタイトルを指定します .PARAMETER Alert Alertを指定すると、既存のファイルと同じ名前のファイル名を入力した場合にアラートを出します。 .INPUTS なし。オブジェクトをパイプすることはできません。 .OUTPUTS 入力されたファイル名 .EXAMPLE C:\PS> Save-FileDialog "C:\Work" 初期ディレクトリを C:\Work にしてダイアログを表示します。 .EXAMPLE C:\PS> Save-FileDialog -Filter "Excelファイル(*.xls,*.xlsx)|*.xls,*.xlsx" Excelファイル(*.xls, *.xlsx)のみを入力できるようにします。 .EXAMPLE C:\PS> Save-FileDialog -DialogTitle "保存するファイル名を入力してね" ダイアログタイトルを「保存するファイル名を入力してね」にします。 .EXAMPLE C:\PS> Save-FileDialog -Alert 既存のファイルと同じ名前のファイル名を入力した場合にアラートを出します。 #> $dialog = New-Object System.Windows.Forms.SaveFileDialog $dialog.Filter = $Filter $dialog.InitialDirectory = $Path $dialog.Title = $DialogTitle #既存のファイルと同じファイル名が入力された場合にアラートを出すか? $dialog.OverwritePrompt = $Alert # ダイアログを表示 if($dialog.ShowDialog() -eq "OK") { #入力されたファイル名を返す return $dialog.Filename } }
.NET Framework の SaveFileDialogクラスを使用しています。
この関数にはヘルプを含めておきました。
詳しい使い方は、下記のようにしてヘルプを参照ください。
help Save-FileDialog -Detailed
コメント