Home >
Windows にまつわる e.t.c.
PowerShell で拡張子から関連付けられているプログラムのフルパスを取得する
Windows 環境では拡張子にプログラムを関連付けてファイルをダブルクリックでプログラムを起動できます。
Windows 10 GUI だと、[設定]-[アプリ]-[既定のアプリ]-[ファイルの種類ごとに規定のアプリを選ぶ] で設定変更できるやつです。
これをコマンドラインで取得するには assoc コマンドと ftype
コマンドを組み合わせで取得する必要があるのですが、2つのコマンドを組み合わせるのが面倒なので PowerShell の関数でラッピングしてみました。
###################################################
# 拡張子から関連付けられたプログラムを得る
###################################################
function GetExt2App([string]$Ext){
# ピリオドが入っていなかったら補う
if($Ext[0] -ne "."){
$Ext = "." + $Ext
}
# 関連付けられた内部情報
$TempBuffer = cmd /c assoc $Ext
if( $LastExitCode -ne 0 ){
return $null
}
# シェルハンドリングの場合は Null を返す
if( $TempBuffer -like "*file"){
return $null
}
# 情報を得られなかった場合は Null を返す
$TempInfo = $TempBuffer.Split("=")
if( $TempInfo.Count -ne 2 ){
return $null
}
# ftype に渡す内部情報
$InternalInfo = $TempInfo[1]
# 関連付けられたプログラム
$TempBuffer = cmd /c ftype $InternalInfo
$TempInfo = $TempBuffer.Split("=")
# 情報を得られなかった場合は Null を返す
if( $TempInfo.Count -ne 2 ){
return $null
}
# プログラムとオプション
$TempBuffer = $TempInfo[1]
# プログラム名だけにする
if( $TempBuffer -match "^`"(?.+?)`"" ){
$ExeInfo = $Matches.ExeInfo
}
return $ExeInfo
}
|
関連情報
関数を PowerShell プロンプトで実行する
http://www.vwnet.jp/windows/PowerShell/2016100401/UseFunctionInPsPrompt.htm
Copyright © MURA
All rights reserved.