HIRO's.NET Blog

PowerShellが好き

目次

Blog 利用状況

ニュース

あわせて読みたい

書庫

日記カテゴリ

リンク

ファイルの拡張子を変更する(関数版)(Windows PowerShell Tips)

ファイルの拡張子を変更する を関数にしてみました。

使用例

sample1.txt の拡張子を.bakに変更する

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

sample1.txt と sample2.txt の拡張子を.bakに変更する

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

ヘルプを参照する

PS > Change-Extension /? 

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://hiro.wankuma.com/)
#===============================================================================
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 + " は存在しませんでした")
    }
  }
}



投稿日時 : 2007年12月28日 0:23

コメントを追加

No comments posted yet.
タイトル  
名前  
URL
コメント