2011年9月26日月曜日

◆Join-Pathの引数を配列対応にする

ファイル処理を行なっているとJoin-Pathをネストして使いたい時が結構ある。Pathを3つとか4つとか指定していっぺんにJoinしてくれると良いのだが、どうもそのような機能は無さそう。

ということで簡単な関数を作ってみた。

001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019

function Join-MPath
{
 
if(!$args.Count){return
}
 
$rtnPath = $args[0]
  foreach($p in $args[1..$args.Count]
)
  {
   
$rtnPath = Join-Path $rtnPath $p
  }
 
$rtnPath
}

"---"
Join-MPath 
"---"
Join-MPath "c:" 
"---"
Join-MPath "c:" "windows" 
"---"
Join-MPath "c:" "\windows\" "\system32"

2011-09-26 10h22_57

関数自体は何の変哲もないが、個人的には結構便利。


牟田口さんからコメントを頂きました。

いつも有益な情報をありがとうございます。
パイプで繋ぐ方法、良いですね。Powershellっぽくて。

使わせてきただきます。(__)

1 件のコメント:

  1. たしかに、Join-Pathの-childPathパラメータが配列を受け取ってくれればなあと思うことありますね。

    ネストにするとカッコが鬱陶しいですが、パイプで繋ぐと割とすっきりするかな、と思いました。

    "c:\"|Join-Path -child \windows\|Join-Path -child \system32

    何回も使う場合は関数定義のほうが楽ですね。

    返信削除