0

降順のフォルダー構造内で.xmlファイル拡張子を持つすべてのファイルを更新しようとしていますが、スクリプトが失敗します(知識不足が原因である可能性があります)。どんな助けも素晴らしいでしょう:

#Example of syntax
#=======================
# seekAndReplace -FilePath "\\sitecollection\newroot\pages" -FileExtension 
# "*.xml" -OldAddress "http://oldroot/sites/blank/" -NewAddress "http://newroot/sites/blank"
#


function seekAndReplace {
Param(
[string]$FilePath,
[string]$FileExtension,
[string]$OldAddress,
[string]$NewAddress
)
$files = Get-ChildItem $FilePath -Filter $FileExtension
    foreach ($file in $files) {
        (Get-Content $file.fullname) |
        ForEach-Object {$_ -replace $OldAddress,$NewAddress} |
        Set-Content $file.fullname
    } #end foreach
} #end function
4

1 に答える 1

4

これは役に立ちますか?RegexEscapeメソッドの使用に注意してください。特殊文字をエスケープするために必要です。

Get-ChildItem $FilePath -Filter $FileExtension | Foreach-Object {
        (Get-Content $_.fullname) -replace [regex]::Escape($OldAddress),$NewAddress | Set-Content $_.fullname
}
于 2013-01-30T06:59:39.170 に答える