In einem Ordner (samt Unterordner) wollte ich Dateien mehrerer Dateitypen nach UTF-8 + BOM konvertieren.
Folgendes PowerShell-Skript hat mir dabei geholfen:
foreach ( $i in Get-ChildItem -Path C:\Mein\Ordner\Pfad\* -Recurse -Include *.json, *.cs, *.cmd, *.csproj, *.csproj, *.sln, *.resx ,*.nsi, *.txt | % { $_.FullName } )
{
Write-Host "Verarbeite Datei '$i'."
$filecontents = Get-Content $i
$Utf8BomEncoding = New-Object System.Text.UTF8Encoding($True)
[System.IO.File]::WriteAllLines($i, $filecontents, $Utf8BomEncoding)
}
Das als „.ps1“-Datei speichern und dann direkt in einer PowerShell-Befehlszeile mit vollem Dateipfad zur „.ps1“-Datei aufrufen.
-
C:\Mein\Ordner\Pfad
ist dabei der Wurzel-Ordner. Wichtig ist, dass wie oben im Skript mit\*
beendet wird. (Grund) - Die einzelnen Dateitypen mit Komma separiert angeben, in meinem Beispiel oben waren das
*.json, *.cs
usw. - Um den gesamten Dateinamen zu erhalten, das
| % { $_.FullName }
ergänzen. (Grund) - Ursprüngliche Idee von Super User.