本日の業務にて、あるディレクトリ以下にあるファイルをすべてURLエンコードしたかったので、PowerShellで下記関数を作成しました。
UrlEncodeメソッドを使用するだけなんですが、毎回 [reflection.assembly]::LoadWith~ なんて記述するのは面倒なので関数化しました。
おまけでデコードする関数も付けておきます。
[void][reflection.assembly]::LoadWithPartialName("System.Web")
#===============================================================================
# Get-UrlEncode: 指定した文字列をURLエンコードして返す
#
# パラメータ:
# $EncodeString: エンコードする文字列
#
# 使用例
# PS > Get-UrlEncode マイクロソフト
# PS > %e3%83%9e%e3%82%a4%e3%82%af%e3%83%ad%e3%82%bd%e3%83%95%e3%83%88
#
# copyright HIRO's.NET(http://hiros-dot.net/)
#===============================================================================
function global:Get-UrlEncode([string]$EncodeString)
{
return [System.Web.HttpUtility]::UrlEncode($EncodeString)
}
#===============================================================================
# Get-UrlEncode: 指定した文字列をURLデコードして返す
#
# パラメータ:
# $EncodeString: デコードする文字列
#
# 使用例
# PS > Get-UrlDecode %e3%83%9e%e3%82%a4%e3%82%af%e3%83%ad%e3%82%bd%e3%83%95%e3%83%88
# PS > マイクロソフト
#
# copyright HIRO's.NET(http://hiros-dot.net/)
#===============================================================================
function global:Get-UrlDecode([string]$DecodeString)
{
return [System.Web.HttpUtility]::UrlDecode($DecodeString)
}
たとえばC:\WorkにあるすべてのファイルをURLエンコードする場合は、
PS > dir c:\work | %{Get-UrlEncode $_.Name}
とします