HIRO's.NET

VB.NET, C#, PowerShell Tipsサイト

 VB.NET, C#, PowerShellを使用しているエンジニアのためのサイト。

 基本的な使用方法から開発で役立つTipsまで幅広く取り扱っています。

HIRO's.NET RSSHIRO's.NET RSS


PowerShellの開発でお困りのことはありませんか?
そんな悩みは当サイトで解決!!

HOME > PowerShell Tips > 自作関数 Tips メニュー

02.ファイルの拡張子を変更する

 
UPDATE:2008/05/02    
 



ファイルの拡張子を変更するには、System.IO.PathクラスのChangeExtensionメソッドを使用します。
これを利用して、拡張子を変更する関数を作成してみました。

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 + " は存在しませんでした")
}
}
}

使用方法ですが、sample1.txt の拡張子を.bakに変更するには

List1

PS > Change-Extension "sample1.txt" "bak" 

sample1.txt と sample2.txt の2つのファイルの拡張子を.bakに変更するには

List2

PS > Change-Extension "sample1.txt","sample2.txt" "bak" 

ヘルプを参照するには、下記のようにします。

List3

PS > Change-Extension -?