大体判ったつもりでいるパイプラインだが、今回はちょっとハマった。
以下の処理はあるフォルダに有るソースファイルを対象に、まとめて文字列置換しようと言うもの。
今回はファイル名に対しても同じ置換を行っている。
大したことはない処理なのだが、なぜか思い通りの結果にならない。
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 } |
“HenoUmu”を”KeizokKbn”に変換しているのだが、なぜか変換後のファイルが再び変換対象に含まれている。
先頭の1個だけ。
不思議というか、きっとみんなハマりますよね・・・。
とりあえず、カッコを付けて、(dir $path –File *.cs) | ~
とやるんですかね。
0 件のコメント:
コメントを投稿