Powershell – Rechercher et remplacer un motif dans un fichier qui est présent dans plusieurs dossiers.

Problématique

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

Powershell_recherche_remplace_motif_fichier

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

Powershell_recherche_remplace_motif_fichier2

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
Powershell_recherche_remplace_motif_fichier3

Laisser un commentaire

%d blogueurs aiment cette page :