Question
Remplacer un mot en fonction de l'OS
- Philippe
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 1778
- Remerciements reçus 21
il y a 11 ans 4 mois #18730
par Philippe
Réponse de Philippe sur le sujet Re:Remplacer un mot en fonction de l'OS
la seule chose que je voir c'est qu'il manque le pipe apres \"(get-Content $MainList32Bits)\"
[code:1]if ($osname -match \"xp\"«»)
{
(get-Content $MainList32Bits)
ForEach-Object {[/code:1]
[code:1]if ($osname -match \"xp\"«»)
{
(get-Content $MainList32Bits)
ForEach-Object {[/code:1]
Connexion ou Créer un compte pour participer à la conversation.
- Toper
- Auteur du sujet
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 145
- Remerciements reçus 0
il y a 11 ans 4 mois #18735
par Toper
Powershell: la vie est belle
Réponse de Toper sur le sujet Re:Remplacer un mot en fonction de l'OS
Bonjour,
ça doit être une erreur de copier/coller car le pipe y est.
Mais le probleme persiste.
J'ai l'impression qu'il réécrit le fichier complèt avec les remplacements demandés, puis qu'il colle le tout dans le fichier, ce qui double chaque ligne (une fois l'ancienne, une fois la nouvelle)...

Une idée ??
ça doit être une erreur de copier/coller car le pipe y est.
Mais le probleme persiste.
J'ai l'impression qu'il réécrit le fichier complèt avec les remplacements demandés, puis qu'il colle le tout dans le fichier, ce qui double chaque ligne (une fois l'ancienne, une fois la nouvelle)...
Une idée ??
Powershell: la vie est belle
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 1778
- Remerciements reçus 21
il y a 11 ans 4 mois #18737
par Philippe
Réponse de Philippe sur le sujet Re:Remplacer un mot en fonction de l'OS
en faite tu a autant de ligne que de remplace dans ta boucle foreach
tu doit renvoyer le résultat de chaque remplace dans la variable sinon il est envoyer au pipe
exemple :
[code:1]\"ligne 1\", \"ligne 2\", \"ligne 3\" | ForEach-Object {
$_ -replace \"1\", \"un\"
$_ -replace \"2\", \"deux\"
}
# resultat
#
# ligne un
# ligne 1
# ligne 2
# ligne deux
# ligne 3
# ligne 3[/code:1]
on vois mieux le travail comme ça :
[code:1]\"ligne 1\", \"ligne 2\", \"ligne 3\" | ForEach-Object {
Write-Host $($_ -replace \"1\", \"un\"«») \"`t<- resultat du remplace par un\"
Write-Host $($_ -replace \"2\", \"deux\"«») \"`t< -resultat du remplace par deux\"
}
#ligne un <- resultat du remplace par un
#ligne 1 < -resultat du remplace par deux
#ligne 2 <- resultat du remplace par un
#ligne deux < -resultat du remplace par deux
#ligne 3 <- resultat du remplace par un
#ligne 3 < -resultat du remplace par deux
[/code:1]
si tu renvoie le replace dans la variable $_ :
[code:1]\"ligne 1\", \"ligne 2\", \"ligne 3\" | ForEach-Object {
$_ = $_ -replace \"1\", \"un\"
$_ = $_ -replace \"2\", \"deux\"
$_ = $_ -replace \"3\", \"trois\"
$_ }
# resultat
#
# ligne un
# ligne deux
# ligne trois[/code:1]
Message édité par: 6ratgus, à: 6/01/15 13:10<br><br>Message édité par: 6ratgus, à: 6/01/15 13:11
tu doit renvoyer le résultat de chaque remplace dans la variable sinon il est envoyer au pipe
exemple :
[code:1]\"ligne 1\", \"ligne 2\", \"ligne 3\" | ForEach-Object {
$_ -replace \"1\", \"un\"
$_ -replace \"2\", \"deux\"
}
# resultat
#
# ligne un
# ligne 1
# ligne 2
# ligne deux
# ligne 3
# ligne 3[/code:1]
on vois mieux le travail comme ça :
[code:1]\"ligne 1\", \"ligne 2\", \"ligne 3\" | ForEach-Object {
Write-Host $($_ -replace \"1\", \"un\"«») \"`t<- resultat du remplace par un\"
Write-Host $($_ -replace \"2\", \"deux\"«») \"`t< -resultat du remplace par deux\"
}
#ligne un <- resultat du remplace par un
#ligne 1 < -resultat du remplace par deux
#ligne 2 <- resultat du remplace par un
#ligne deux < -resultat du remplace par deux
#ligne 3 <- resultat du remplace par un
#ligne 3 < -resultat du remplace par deux
[/code:1]
si tu renvoie le replace dans la variable $_ :
[code:1]\"ligne 1\", \"ligne 2\", \"ligne 3\" | ForEach-Object {
$_ = $_ -replace \"1\", \"un\"
$_ = $_ -replace \"2\", \"deux\"
$_ = $_ -replace \"3\", \"trois\"
$_ }
# resultat
#
# ligne un
# ligne deux
# ligne trois[/code:1]
Message édité par: 6ratgus, à: 6/01/15 13:10<br><br>Message édité par: 6ratgus, à: 6/01/15 13:11
Connexion ou Créer un compte pour participer à la conversation.
- Toper
- Auteur du sujet
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 145
- Remerciements reçus 0
il y a 11 ans 4 mois #18761
par Toper
Powershell: la vie est belle
Réponse de Toper sur le sujet Re:Remplacer un mot en fonction de l'OS
Merci beaucoup !
Powershell: la vie est belle
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.035 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Remplacer un mot en fonction de l'OS