Question
Remplacer texte de façon récursive
- djedje68
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 20
- Remerciements reçus 0
il y a 13 ans 5 mois #13248
par djedje68
Remplacer texte de façon récursive a été créé par djedje68
Bonjour,
Nouveau sur PowerShell j'aimerai créer un petit script qui permet de modifier le contenu de fichiers dans plusieurs dossiers.
Exemple :
On a l'arborescence suivante :
C:\MonDir
C:\MonDir\Ressources
C:\MonDir\Config
Dans chaque répertoire nous avons des fichiers.
J'aimerai que mon script parcours de façon récursive les dossier pour remplacer une chaîne de caractère donnée par une autre. J'arrive à le faire de façon non récursive via la commande :
[code:1](get-content monFichier) | foreach-object {$_ -replace \"OLD\", \"NEW\"} | set-content monFichier[/code:1]
Pouvez-vous m'aider svp ?
D'avance merci,
Nouveau sur PowerShell j'aimerai créer un petit script qui permet de modifier le contenu de fichiers dans plusieurs dossiers.
Exemple :
On a l'arborescence suivante :
C:\MonDir
C:\MonDir\Ressources
C:\MonDir\Config
Dans chaque répertoire nous avons des fichiers.
J'aimerai que mon script parcours de façon récursive les dossier pour remplacer une chaîne de caractère donnée par une autre. J'arrive à le faire de façon non récursive via la commande :
[code:1](get-content monFichier) | foreach-object {$_ -replace \"OLD\", \"NEW\"} | set-content monFichier[/code:1]
Pouvez-vous m'aider svp ?
D'avance merci,
Connexion ou Créer un compte pour participer à la conversation.
- xyz
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 69
il y a 13 ans 5 mois #13249
par xyz
Tutoriels PowerShell
Réponse de xyz sur le sujet Re:Remplacer texte de façon récursive
Salut,
djedje68 écrit:
Cherche déjà comment récupérer tous les fichiers.
Restera à combiner les deux (ton code existant et le code de recherche récursive), le pipeline ne se sera peut être la solution la plus facile, car le fichier lut doit également être accessible en écriture, une étape intermédiaire sera nécessaire.
Il est possible d'utiliser le pipeline dans l'instruction Foreach( ... ), à ne pas confondre avec l'alias du cmdlet Foreach-Object, voir la doc pour plus de détails.
djedje68 écrit:
Dans ces cas là, procéde étape par étape.J'aimerai que mon script parcours de façon récursive les dossier pour remplacer une chaîne de caractère donnée par une autre.
Cherche déjà comment récupérer tous les fichiers.
Restera à combiner les deux (ton code existant et le code de recherche récursive), le pipeline ne se sera peut être la solution la plus facile, car le fichier lut doit également être accessible en écriture, une étape intermédiaire sera nécessaire.
Il est possible d'utiliser le pipeline dans l'instruction Foreach( ... ), à ne pas confondre avec l'alias du cmdlet Foreach-Object, voir la doc pour plus de détails.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- djedje68
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 20
- Remerciements reçus 0
il y a 13 ans 5 mois #13257
par djedje68
Réponse de djedje68 sur le sujet Re:Remplacer texte de façon récursive
Bonjour,
Tout d'abord merci pour ta réponse!
Alors récupérer la liste de tous les fichiers, j'y arrive grâce à Get-ChildItem -recurse mais c'est combiner les deux... La je suis totalement perdu :/
Tout d'abord merci pour ta réponse!
Alors récupérer la liste de tous les fichiers, j'y arrive grâce à Get-ChildItem -recurse mais c'est combiner les deux... La je suis totalement perdu :/
Connexion ou Créer un compte pour participer à la conversation.
- xyz
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 69
il y a 13 ans 5 mois #13259
par xyz
Tutoriels PowerShell
Réponse de xyz sur le sujet Re:Remplacer texte de façon récursive
Communique-nous tes deux lignes à fusionner.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- djedje68
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 20
- Remerciements reçus 0
il y a 13 ans 5 mois #13262
par djedje68
Réponse de djedje68 sur le sujet Re:Remplacer texte de façon récursive
Alors, j'arrive à lister tous les fichiers d'une arborescence via la commande Get-ChildItem MonDirectory -recurse
Et j'arrive à remplacer le contenu d'un fichier via la commande :
[code:1](get-content monFichier) | foreach-object {$_ -replace \"OLD\", \"NEW\"} | set-content monFichier[/code:1]
Mais je n'arrive pas à remplacer le contenu de tous les fichiers listés par la commande Get-ChildItem...
Merci,
Et j'arrive à remplacer le contenu d'un fichier via la commande :
[code:1](get-content monFichier) | foreach-object {$_ -replace \"OLD\", \"NEW\"} | set-content monFichier[/code:1]
Mais je n'arrive pas à remplacer le contenu de tous les fichiers listés par la commande Get-ChildItem...
Merci,
Connexion ou Créer un compte pour participer à la conversation.
- xyz
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 69
il y a 13 ans 5 mois #13266
par xyz
Tutoriels PowerShell
Réponse de xyz sur le sujet Re:Remplacer texte de façon récursive
Une solution :
[code:1]
$Path=\"c:\temp\test\"
Foreach ($File in Get-ChildItem $Path -recurse)
{
(get-content $File.FullName) |
foreach-object {$_ -replace \"OLD\", \"NEW\"} |
set-content $File.FullName
}
Get-ChildItem $path -recurse|
type -path {$_.FullName}
[/code:1]
Uun code de test :
[code:1]
$Path=\"c:\temp\test\"
md $path -ea SilentlyContinue
$Template=@\"
chaine new
old chaine oldest
holding
old
\"@
1..5|% { Set-Content -Value $Template -Path \"$Path\File${_}.txt\"}
dir $path
Foreach ($File in Get-ChildItem $path -recurse)
{
(get-content $File.FullName) |
foreach-object {$_ -replace \"OLD\", \"NEW\"} |
set-content $File.FullName
}
Get-ChildItem $path -recurse|
type -path {Write-Warning $_;$_.FullName}
[/code:1]
[code:1]
$Path=\"c:\temp\test\"
Foreach ($File in Get-ChildItem $Path -recurse)
{
(get-content $File.FullName) |
foreach-object {$_ -replace \"OLD\", \"NEW\"} |
set-content $File.FullName
}
Get-ChildItem $path -recurse|
type -path {$_.FullName}
[/code:1]
Uun code de test :
[code:1]
$Path=\"c:\temp\test\"
md $path -ea SilentlyContinue
$Template=@\"
chaine new
old chaine oldest
holding
old
\"@
1..5|% { Set-Content -Value $Template -Path \"$Path\File${_}.txt\"}
dir $path
Foreach ($File in Get-ChildItem $path -recurse)
{
(get-content $File.FullName) |
foreach-object {$_ -replace \"OLD\", \"NEW\"} |
set-content $File.FullName
}
Get-ChildItem $path -recurse|
type -path {Write-Warning $_;$_.FullName}
[/code:1]
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.044 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Remplacer texte de façon récursive