A number of times recently I have had need of a script to replace a chunk of code or XML in a few dozen files. I've been enjoying Powershell lately; so I decided to use it to write the script. A couple challenges presented. First, the text replacement had to handle line breaks. Second, it had to handle (escape) special characters. It took me a couple hours and tips from a few different blog posts & Stack Overflow questions to get it right. So, I'll post the product here.
Obviously I've simplified my script a bit, but the above script should be completely functional. Notice that you can essentially just paste in your find & replace text. No special work to do in escaping characters. These two posts were especially helpful in getting this result:
$oldCode = @"
/// <summary>
/// My Old XML Comment
/// </summary>
public static new string ThingID
{
get
{
return
"@
$newCode = @"
/// <summary>
/// My New XML Comment
/// </summary>
public new const string ThingID =
"@
Get-ChildItem .\ -Recurse –Include “*.YourFileExtension” | foreach-object {
$text = Get-Content $_.Fullname -Raw
$text = $text -replace $oldCode, $newCode
$text | Out-File $_.Fullname -Force utf8
}
Obviously I've simplified my script a bit, but the above script should be completely functional. Notice that you can essentially just paste in your find & replace text. No special work to do in escaping characters. These two posts were especially helpful in getting this result:
- http://personal-code.blogspot.com/2013/03/powershell-string-literals-and-formating.html
- http://stackoverflow.com/a/20642482/698978
Comments
Post a Comment