Question Get-content replace sur une sélection prédéfinie.

Plus d'informations
il y a 1 an 3 jours #33196 par Jeantet François-Louis
Bonjour à tous, 

Je souhaiterai savoir comment faire pour remplacer un texte spécifique dans un fichier, à savoir que je sais comment faire pour récupérer un texte avec "Select-String -Pattern", à l'ajouter dans un autre document avec le Add-Content, à remplacer l'intérieur du document avec le Set-Content, mais j'avoue que je voudrais juste changer les lignes qui commencent par les mêmes termes que ce que je copie. Pourriez-Vous me dire si vous avez une idée pour le faire aisément... 

$filepath = "C:\Test\Max\AppData\Roaming\Anydesk.old\ad_msi\user.conf" 
$selectstring = "ad.roster.favorites"
$selectstring2 = "ad.roster.items"
$replace1 = Select-String -Pattern $selectstring -Path $filepath
$replace2 = Select-String -Pattern $selectstring2 -Path $filepath

$filepath2 = "C:\Test\Max\AppData\Roaming\Anydesk\ad_msi\user.conf" 
$remove1 = Select-String -Pattern $selectstring -Path $filepath2
$remove2 = Select-String -Pattern $selectstring2 -Path $filepath2



Rename-Item -Path C:\Test\Max\AppData\Roaming\AnyDesk AnyDesk.old

Remove-Item -Path C:\ProgramData\AnyDesk
 
anydesk.exe -- start

Copy-Item -Path C:\Test\Max\AppData\Roaming\AnyDesk.old\ad_msi\thumbnails -Destination C:\Test\Max\AppData\Roaming\AnyDesk\ad_msi\thumbnails -Recurse -Force -PassThru

Get-Content "C:\Test\Max\AppData\Roaming\Anydesk.old\ad_msi\user.conf" |Select-String -Pattern "ad.roster.favorites"|
Add-Content "C:\Test\Max\AppData\Roaming\AnyDesk\ad_msi\user.conf" 

Get-Content "C:\Test\Max\AppData\Roaming\AnyDesk.old\ad_msi\user.conf" |Select-String -Pattern "ad.roster.items"|
Add-Content "C:\Test\Max\AppData\Roaming\AnyDesk\ad_msi\user.conf"

(Get-Content C:\Test\Max\AppData\Roaming\AnyDesk\ad_msi\user.conf) -Replace '$remove1','$replace1'

Voici le code, si quelqu'un a une idée... 

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

Plus d'informations
il y a 1 an 3 jours - il y a 1 an 3 jours #33197 par Laurent Dardenne
Salut,
Select-String recherche une ou des occurrences de chaîne ( en interne avec une expression régulière), similaire à l'opérateur -Match.
Pour rechercher et remplacer il faut utiliser l'opérateur -Replace (basée aussi sur ne expression régulière),

Quelle chaine recherches-tu et par quelle chaine la remplacer ?

Un exemple du principe :
$S='Avant le traitement'
$Regex='^Avant '
$Remplace='Après '
$s -replace $regex,"$Remplace"

Tutoriels PowerShell
Dernière édition: il y a 1 an 3 jours par Laurent Dardenne. Raison: coquille

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

Plus d'informations
il y a 1 an 2 jours #33198 par Jeantet François-Louis
En fait ce que je souhaite faire c'est dans un fichier texte, choisir les lignes qui commencent par l'expression "ad.roster.favorites", les copier, et dans un autre fichier texte (qui contient aussi des lignes commençant par "ad.roster.favorites") les coller en remplaçant ces lignes "identiques"

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

Plus d'informations
il y a 1 an 2 jours #33199 par Laurent Dardenne
Ok, mais je ne comprend pas ceci :
et dans un autre fichier texte (qui contient aussi des lignes commençant par "ad.roster.favorites") les coller en remplaçant ces lignes "identiques"

Les terme 'remplacer' et 'identique' me laisse penser que tu recopies la même info.

Est-ce ceci :
1- cherche :
"ad.roster.favorites ligne trouvée premier fichier"

2- cherche
"ad.roster.favorites existante second fichier "

3- remplace par
"ad.roster.favorites ligne trouvée premier fichier recopié dans le second fichier " ?

Est-ce : supprimer dans le second fichier toutes les lignes commençant par "ad.roster.favorites" puis y ajouter toutes les lignes commençant par "ad.roster.favorites" trouvées dans le premier fichier ? Est-ce un update en fait ou un ajout de lignes ?

Tutoriels PowerShell

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

Plus d'informations
il y a 1 an 2 jours #33200 par Jeantet François-Louis
Les deux fichiers textes sont identiques, à ceci prêt que d'un jour à l'autre, le second fichier modifie les lignes ad.roster.favorites et ad.roster.items. il faut donc qu'à chaque modification, je récupère les lignes concernées du fichier 1 et les colle dans le fichier 2 qui a ces même lignes mais incomplètes.

Il faut faire une suppression des lignes existantes du fichier 2 et coller les lignes du fichier 1 en clair

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

Plus d'informations
il y a 1 an 1 jour #33201 par Laurent Dardenne
D'accord, est-ce que l'ordre des lignes est important ou pas ?
C'est à dire que pour une occurrence trouvée pour la ligne 4 du fichier 1 on doit remplacer celle de la ligne 4 dans le fichier 2 ?

"Les deux fichiers textes sont identiques" ils ont donc toujours le même nombre de ligne, c'est bien ça ?

Un exemple avant le traitement et après le traitement serai le bienvenu :-)

Tutoriels PowerShell

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

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