2016年2月8日月曜日

◆フォルダ配下のソースファイルを対象に文字列置換(パイプラインは難しい)

大体判ったつもりでいるパイプラインだが、今回はちょっとハマった。

以下の処理はあるフォルダに有るソースファイルを対象に、まとめて文字列置換しようと言うもの。
今回はファイル名に対しても同じ置換を行っている。

大したことはない処理なのだが、なぜか思い通りの結果にならない。

001
002
003
004
005
006
007
008
009
010
011
012
013

Param(
 
$path,
  $BeforeString,
  $AfterString
)

dir $path -File *.cs | %
{
 
$tString = gc $_.
FullName 
 
Move-Item $_.FullName ($_.FullName + ".old"
)
 
$newName = $_.Name -replace $BeforeString,$AfterString
  $newPath = Join-Path $_.DirectoryName $newName
  $tString -replace $BeforeString,$AfterString | Set-Content $newPath
}

変換前
image

変換後
image

“HenoUmu”を”KeizokKbn”に変換しているのだが、なぜか変換後のファイルが再び変換対象に含まれている。
先頭の1個だけ。

不思議というか、きっとみんなハマりますよね・・・。

とりあえず、カッコを付けて、(dir $path –File *.cs)  |  ~
とやるんですかね。

0 件のコメント:

コメントを投稿