Powershell pour remplacer du texte dans plusieurs fichiers stockés dans de nombreux dossiers
Je veux remplacer un texte dans plusieurs fichiers et dossiers. Le dossier des changements de nom, mais le nom est toujours config.xml.
$fileName = Get-ChildItem "C:\config\app*\config.xml" -Recurse
(Get-Content $fileName) -replace 'this', 'that' | Set-Content $fileName
Quand je lance le script ci-dessus, il fonctionne, mais il écrit tout le texte dans config.xml environ 20 fois. Quel est le problème?
double possible de Script PowerShell pour Rechercher et Remplacer pour tous les Fichiers avec une Extension Spécifique
OriginalL'auteur aston_zh | 2014-02-04
Vous devez vous connecter pour publier un commentaire.
$filename est une collection de
System.IO.FileInfo objects
.Vous avez à boucle pour obtenir le contenu de chaque fichier :
cela devrait faire ce que vous voulez :
grand code ici, merci!
Comment puis-je lire les fichiers avec certaines de codage, par exemple. cp936?
Remarque: ce qui semble définir le contenu de tous les fichiers, c'est à dire des fichiers d'image sera ouvert en tant que texte et ré-enregistré. J'ai ajouté une vérification supplémentaire avant de modifier les fichiers
OriginalL'auteur Loïc MICHEL
$filename est un tableau de noms de fichiers, et c'est en essayant de les faire tous à la fois. Essayez d'en faire un à la fois:
OriginalL'auteur mjolinor
En général, vous devez utiliser le pipeline et de combiner les
ForEach-Object
et/ouWhere-Object
Applets de commande.Dans votre cas, ce serait comme comme quelque chose de plus semblable à:
Qui peut être raccourcie un peu:
OriginalL'auteur Maxime Labelle