15
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PowerShell でファイル選択ダイアログを利用する

Last updated at Posted at 2017-06-24

ブログからの転載

意外と使い勝手が良さそうなのがこの方法だと思う。

画像ファイルを1つ選択選択させる

[void][System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms")

$dialog = New-Object System.Windows.Forms.OpenFileDialog
$dialog.Filter = "画像ファイル(*.PNG;*.JPG;*.GIF)|*.PNG;*.JPG;*.JPEG;*.GIF"
$dialog.InitialDirectory = "C:\"
$dialog.Title = "ファイルを選択してください"
# 複数選択を許可したい時は Multiselect を設定する
$dialog.Multiselect = $true

# ダイアログを表示
if($dialog.ShowDialog() -eq [System.Windows.Forms.DialogResult]::OK){
    # 複数選択を許可している時は $dialog.FileNames を利用する
    Write-Output ($dialog.FileName + " が選択されました。")
}

CSV ファイルを選択する

こういうパターンあるかな?と思う。
普段はタスクスケジューラーでキックしているけど、失敗したら手動で動かすとか。

Param(
  [Parameter()]
  [String] $FilePath
)

# $FilePath が設定されていない、又はファイルが存在しない
if([string]::IsNullOrEmpty($FilePath) -Or (Test-Path -LiteralPath $FilePath -PathType Leaf) -eq $false) {
    [void][System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms")    
    $dialog = New-Object System.Windows.Forms.OpenFileDialog
    $dialog.Filter = "CSV ファイル(*.CSV)|*.CSV"
    $dialog.InitialDirectory = "C:\"
    $dialog.Title = "ファイルを選択してください"

    # キャンセルを押された時は処理を止める
    if($dialog.ShowDialog() -eq [System.Windows.Forms.DialogResult]::NG){
        exit 1
    }

    # 選択したファイルパスを $FilePath に設定
    $FilePath = $dialog.FileName
}

# ここから下で $FilePath をいい感じで処理する
Write-Output $FilePath
15
15
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?