Powershell File Content Replace
Hier ein kleines Beispiel wie aus einer UTF8 Datei der Content mit Powershell ausgelesen wird, und einige HTML-Entities ersetzt werden.
if($Path.EndsWith(".htm") -or $Path.EndsWith(".html"))
{
$bFileChanged = $false;
$oContent = Get-Content -path "$Path" -Raw -Encoding utf8
if($oContent.Contains('™'))
{
$oContent = $oContent.Replace("™","™");
$bFileChanged = $true;
}
if($oContent.Contains('®'))
{
$oContent = $oContent.Replace("®","®");
$bFileChanged = $true;
}
if($oContent.Contains('©'))
{
$oContent = $oContent.Replace("©","©");
$bFileChanged = $true;
}
if($bFileChanged)
{
Write-Host "Updated: $$Path"
Set-Content -Path "$Path" $oContent
}
}
Dieser Codeschnipsel kommt aus einem Script in der über eine Vielzahl verschiedener Dateien geloopt wird welche per $Path an die erste If übergeben werden. Die Loop würde für das Beispiel zu weit führen weshalb ich diese entfern habe.
Die $bFileChanged Variable ist nur ein Schreibschutz um unveränderte Dateien nicht unnötig als neu zu markieren indem der Modified Timestamp aktualisiert wird.