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

Par défaut

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