Problématique
J’ai un fichier “Preferences.strings” qui est présent dans plusieurs dossiers.

Ce fichier contient un texte “Color Theme” que je souhaiterais remplacer par un autre texte, “UX Theme”

Comment faire ?
Avec Powershell, comme toujours.
Tout d’abord, j’utilise Get-ChildItem, pour d’abord filter sur les fichiers qui ont l’extension .strings .
Ensuite, à partir de ce premier groupe de résultats, je procède par appliquer un autre filtre, en fonction du nom du fichier, qui est “Preferences”
[code language=”powershell”]
$filenames = Get-ChildItem "C:\Users\adookhan\Desktop\Powershell\2464\test\Sites\Sites\*.strings" -Recurse | Where-Object { $_.Name -match ‘Preferences’ }
select -expand fullname
[/code]
Ensuite, je parcours ces fichiers et je lis les contenus avec Get-Content.
Je remplace ensuite le motif recherché “Color Theme” par “UX Theme”, et je termine
avec Set-Content
[code language=”powershell”]
(Get-Content $filename) -replace ‘Color Theme’, ‘UX Theme’ | Set-Content $fileName
[/code]
Voici le code complet
[code language=”powershell”]
$filenames = Get-ChildItem "C:\Users\adookhan\Desktop\Powershell\2464\test\Sites\Sites\*.strings" -Recurse | Where-Object { $_.Name -match ‘Preferences’ }
select -expand fullname
foreach ($filename in $filenames)
{
#Write-Host ($filenames| Format-Table | Out-String)
(Get-Content $filename) -replace ‘Color Theme’, ‘UX Theme’ | Set-Content $fileName
}
[/code]
Le resultat