Question Ajouter une ligne en tête de fichiers textes

Plus d'informations
il y a 13 ans 11 mois #11398 par WOLFFER
Bonjour à tous

Je dois dans une multitude de répertoires ajouter une première ligne à tous les fichiers d'extension .txt et .vid. La ligne à ajouter est constituée d'informations contenu dans le fichier traité. Un bout de code vaut mieu que de grand discours voilà le code écrit .

Get-ChildItem -Recurse -Include *.txt, *.vid | Select-String -Pattern \"Liste des états\" -Encoding utf7 | ForEach{
$File = Get-Content -Path $_.path
$Ajout = $_.Line.Replace(\"Liste des états\", \"Période\") + \"`n\"
$File1 = $Ajout + $File
#$File1 = \"$Ajout $File\"
$chemin = $_.path + 1
#$File > $chemin
#Out-File $File -FilePath $chemin -Force
Set-Content $File -Path $chemin
#${$_.path} = $Ajout + \"` n \"+ ${$_}
}

Je sèche sur plusieurs soucis.
1 - j'ai pas réussi à écrire dans le même fichier, d'ou la variable $chemin ? Un message indique que le fichier est déjà ouvert je pense que c'est le Get-content. Comment libérer le fichier dés que $File est remplie de son contenu ?

2 - Plus grave, le fichier généré (par une des 3 solutions essayées, out-file, Set-Content, ...) n'a plus la même structure que le fichier d'origine, il a perdu tous ces retours à la ligne ?
$File est bien structuré (avec ces sauts de ligne), la concaténation de $Ajout et de $File provoque la perte des sauts de ligne ?
Par contre si on les concatène dans l'autre sens, à savoir $File + $Ajout, dans ce cas $File1 est bien structuré, on retrouve tous les sauts de lignes ?

3 - Pourquoi dans le select-string je suis obligé d'ajouter en -encoding utf7 pour pouvoir rechercher des chaînes avec des caractères accentués ?
Dans le même ordire d'idée l'opérateur -replace ne fonctionne pas avec des caractères accentuée. J'ai été obligé de passer par la méthode .replace ? quelque chose m'échappe....

Par avance merci de vos lumières

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.035 secondes
Propulsé par Kunena