Change-Extension.ps1
#===============================================================================
# Change-Extension: ファイルの拡張子を変更する
# Param:
# $path : 拡張子を変更するファイル
# $newExtension: 変更後の拡張子
# $echo : "on"を指定すると変更履歴を表示。規定値は"off"
#
# 使用例
# #sample1.txt の拡張子を.bakに変更する
# Change-Extension "sample1.txt" "bak"
#
# #sample1.txt と sample2.txt の拡張子を.bakに変更する
# Change-Extension "sample1.txt","sample2.txt" "bak"
#
# ヘルプを見る場合は
# Change-Extension -?
#
# copyright HIRO's.NET(http://hiros-dot.net/)
#===============================================================================
function global:Change-Extension
{
Param ([String[]]$path, [String]$newExtension, [String]$echo="off")
#ヘルプの参照か?
if ( $path -eq "-?" -or $newExtension -eq "-?" -or $echo -eq "-?" )
{
$helpmsg = @"
書式`r`n
Change-Extension [`$path], [`$newExtension], [`$echo ]`r`n
パラメータ`r`n
`$path
拡張子を変更する項目のパスを指定します。`r`n
`$newExtension
変更後の拡張子を指定します`r`n
`$echo
変更履歴を表示する場合は`"on`"を指定します。規定値は`"off`"です。`r`n
`r`n
使用例`r`n
#sample1.txt の拡張子を.bakに変更する
Change-Extensio `"sample1.txt`" `"bak`"
#sample1.txt と sample2.txt の拡張子を.bakに変更する
Change-Extensio `"sample1.txt`",`"sample2.txt`" `"bak`"
#変更履歴を表示する
Change-Extension "sample1.txt" "bak" "on"
#ヘルプを参照する
Get-DateFileName /?
"@
Write-Host $helpmsg
return
}
foreach ( $file in $path )
{
#拡張子返還後のファイル名を取得
$newfile = [System.IO.Path]::ChangeExtension($file, $newExtension)
#ファイル名を変更する
if ( Test-Path $file )
{
Rename-Item $file $newfile
# $echo が "on"なら変換結果を表示
if ( $echo -eq "on" )
{
Write-Host ($file + " --> " + $newfile)
}
}
elseif ( $echo -eq "on" )
{
Write-Host ($file + " は存在しませんでした")
}
}
}