昨日の「[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

コメント