Question
remplacement de chaine dans un fichier mais avec log
- Scirop
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 8
- Remerciements reçus 0
il y a 2 ans 8 mois #31047
par Scirop
remplacement de chaine dans un fichier mais avec log a été créé par Scirop
J'ai ça qui marche bien mais sans savoir ce qui est fait:
Pour en savoir plus (nombre d'occurences, traces des fichiers traités...
J'ai tenté ça:
Mais les fichiers ne sont pas modifiés...
Est-ce que le for-each travaille sur des copies quand je ne passe pas par les pipes?
En tout cas mon $txt n'est pas modifié...
Que faire pour que ça marche?
Merci.
(get-content $fichier.FullName) | %{$_ -replace $p1,$p2} | set-content $fichier.FullName
Pour en savoir plus (nombre d'occurences, traces des fichiers traités...
J'ai tenté ça:
$txt=(get-content $fichier.FullName)
$c1=0
$c2=0
foreach ($line in $txt)
{
$c1=$c1+([regex]::Matches($line, $p1)).count
$line=$line -replace $p1,$p2
$c2=$c2+([regex]::Matches($line, $p1)).count
}
write-host ($fichier.FullName ) -NoNewline
Write-Host (" " + $c1 + " occurence avant") -ForegroundColor yellow -NoNewline
if ($c2 -eq 0)
{
write-host (" " + $c2 + " occurence apres") -ForegroundColor green
}
else
{
write-host (" " + $c2 + " occurence apres") -ForegroundColor red
}
try
{
set-content -Path $fichier.FullName -value $txt
}
catch
{
write-host ("erreur d'écriture") -ForegroundColor red
write-host ($error[0]) -ForegroundColor red
}
Mais les fichiers ne sont pas modifiés...
Est-ce que le for-each travaille sur des copies quand je ne passe pas par les pipes?
En tout cas mon $txt n'est pas modifié...
Que faire pour que ça marche?
Merci.
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6300
- Remerciements reçus 68
il y a 2 ans 8 mois #31060
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet remplacement de chaine dans un fichier mais avec log
Salut,
>>Que faire pour que ça marche?
déjà trouver l'origine du pb, avec Write-Debug par exemple.
Ensuite trouver les occurences de $txt, à priori rien ne la modifie.
La variable $Line de la boucle foreach, pas du cmdlet Foreach-object, est locale et ce n'est pas une référence.
Une soluce rapido (à tester):
>>Que faire pour que ça marche?
déjà trouver l'origine du pb, avec Write-Debug par exemple.
Ensuite trouver les occurences de $txt, à priori rien ne la modifie.
La variable $Line de la boucle foreach, pas du cmdlet Foreach-object, est locale et ce n'est pas une référence.
Une soluce rapido (à tester):
$Result= foreach ($line in $txt)
{
$c1 +=([regex]::Matches($line, $p1)).count
$line -replace $p1,$p2
$c2 +=([regex]::Matches($line, $p1)).count
}
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.091 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- remplacement de chaine dans un fichier mais avec log