Question Get-content replace sur une sélection prédéfinie.
- Jeantet François-Louis
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 5
- Remerciements reçus 0
il y a 6 mois 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...
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.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6298
- Remerciements reçus 68
il y a 6 mois 2 jours - il y a 6 mois 2 jours #33197
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Get-content replace sur une sélection prédéfinie.
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 :
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 6 mois 2 jours par Laurent Dardenne. Raison: coquille
Connexion ou Créer un compte pour participer à la conversation.
- Jeantet François-Louis
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 5
- Remerciements reçus 0
il y a 6 mois 2 jours #33198
par Jeantet François-Louis
Réponse de Jeantet François-Louis sur le sujet Get-content replace sur une sélection prédéfinie.
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.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6298
- Remerciements reçus 68
il y a 6 mois 1 jour #33199
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Get-content replace sur une sélection prédéfinie.
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 ?
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.
- Jeantet François-Louis
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 5
- Remerciements reçus 0
il y a 6 mois 1 jour #33200
par Jeantet François-Louis
Réponse de Jeantet François-Louis sur le sujet Get-content replace sur une sélection prédéfinie.
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
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.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6298
- Remerciements reçus 68
il y a 6 mois 1 jour #33201
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Get-content replace sur une sélection prédéfinie.
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
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.096 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les initiés
- Get-content replace sur une sélection prédéfinie.