Besoin de savoir comment utiliser PowerShell pour lire un fichier texte et remplacer du texte ? C’est ce que nous appelons la lecture de fichiers texte PowerShell.
Ne cherchez pas plus loin ! Ce billet de blog est pour vous. À la fin du billet, je vous montrerai une fonction que j’ai créée pour rendre votre vie beaucoup plus facile.
Remplacer du texte dans un fichier avec PowerShell est un processus en trois étapes.
- Lecture du fichier
- Recherche et remplacement de la chaîne
- Écriture des modifications dans le fichier.
Lecture du fichier
Vous devez d’abord lire le fichier. Commençons par en créer un avec la cmdlet Set-Content
afin d’avoir un fichier avec lequel travailler.
Pour lire ce fichier, vous pouvez utiliser la commande Get-Content
. Vous pouvez lire le fichier en fournissant un chemin de fichier texte au paramètre Path
comme indiqué ci-dessous.
Recherche et Remplacement de la Chaîne
Maintenant que nous avons le contenu du fichier en mémoire dans une chaîne, nous devons rechercher et remplacer la chaîne. Une façon de le faire est d’utiliser l’opérateur -replace
. Cet opérateur PowerShell trouve une chaîne et la remplace par une autre.
En utilisant le contenu du fichier exemple, nous pouvons fournir la chaîne de recherche foo avec la chaîne de remplacement bar ce qui devrait rendre le contenu du fichier foo foo baz maintenant.
Écriture dans le fichier
Maintenant que nous avons les nouveaux contenus du fichier enregistrés dans $newContent
, nous pouvons maintenant écrire ces nouveaux contenus dans le fichier. Une façon de le faire est d’utiliser la commande Set-Content
.
La commande Set-Content
remplace tous les contenus d’un fichier en assignant une nouvelle valeur.
Lorsque vous lisez maintenant le fichier C:\file.txt avec la commande Get-Content
, vous verrez qu’il contient maintenant le nouveau contenu.
Gestion des références de fichiers ouvertes
Les étapes que vous avez précédemment effectuées fonctionnent… la plupart du temps. Cependant, dans le monde réel, cela ne se passe pas toujours ainsi.
Vous constaterez que vous devrez parfois traiter des fichiers qui sont ouverts par PowerShell lui-même. Cela vous empêche d’écrire les nouveaux contenus dans le fichier.
Pour remédier à cette situation de références de fichiers ouvertes, j’ai créé un flux de travail simple qui vous permet de créer d’abord un fichier texte temporaire sur le disque avec les nouveaux contenus, de supprimer le fichier d’origine, puis de renommer le fichier temporaire.
Voici un exemple de son fonctionnement :
Voici un exemple d’une fonction que j’ai créée appelée Find-InTextFile
qui utilise cette approche combinée à la capacité de trouver (mais pas de remplacer) du texte dans un fichier.
Cette fonction utilise également la syntaxe des expressions régulières plus puissante pour trouver des chaînes. Vous constaterez que les expressions régulières vous permettent de rechercher de manière plus flexible en utilisant des caractères spéciaux comme les guillemets simples, les caractères spéciaux, et plus encore.
Vous pouvez également voir ci-dessous que j’utilise une boucle foreach pour traiter plusieurs fichiers à la fois. Cela est pratique si vous avez une série de fichiers à traiter.
Ressources
Pour plus d’informations sur la commande Set-Content
, consultez Set-Content : La manière PowerShell d’écrire dans un fichier ou une autre façon d’écrire du contenu dans un fichier, la commande Out-File
.
Source:
https://adamtheautomator.com/powershell-read-text-file/