Question
Copier une info d'un fich vers un autre
- laucaz
-
Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 48
- Remerciements reçus 0
il y a 13 ans 4 mois #13650
par laucaz
Copier une info d'un fich vers un autre a été créé par laucaz
Bonjour à tous,
Je suis sur que c'est tout simple mais je ne trouve pas ...
J'ai un fichier *.ini 1 de référence qu'on appellera \"versionRef\" et un fichier 2 sur une autre machine qu'on appelera \"versionCible\". Les 2 fichiers ont la meme structure et les memes rubriques. Dans ce fichier j'ai plusieurs rubriques dont une qui se presente comme ci-dessous :
[production]
Chemin=.\production
VERSION=X999999999999
J'ai besoin de sélectionner la ligne complete \"VERSION=X999999999999\" pour la coller à la place de la meme ligne mais dans le fichier CIBLE....
Via un Get-content je peux recupérer le contenu du fichier de reference... Mais je ne sais pas faire un \"selectionner\" + copier + selectionner + coller\"...
Je sais j'ai honte par avance...
Si une bonne âme pouvait me donner quelques tuyaux ...
@+
Je suis sur que c'est tout simple mais je ne trouve pas ...
J'ai un fichier *.ini 1 de référence qu'on appellera \"versionRef\" et un fichier 2 sur une autre machine qu'on appelera \"versionCible\". Les 2 fichiers ont la meme structure et les memes rubriques. Dans ce fichier j'ai plusieurs rubriques dont une qui se presente comme ci-dessous :
[production]
Chemin=.\production
VERSION=X999999999999
J'ai besoin de sélectionner la ligne complete \"VERSION=X999999999999\" pour la coller à la place de la meme ligne mais dans le fichier CIBLE....
Via un Get-content je peux recupérer le contenu du fichier de reference... Mais je ne sais pas faire un \"selectionner\" + copier + selectionner + coller\"...
Je sais j'ai honte par avance...
Si une bonne âme pouvait me donner quelques tuyaux ...
@+
Connexion ou Créer un compte pour participer à la conversation.
- COTTIN
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 84
- Remerciements reçus 0
il y a 13 ans 4 mois #13651
par COTTIN
Réponse de COTTIN sur le sujet Re:Copier une info d'un fich vers un autre
[code:1]Select-String -Path \"ton fichier\" -Pattern \"la chaine que tu recherche\"[/code:1]
c'est pour récupérer la ligne
Perso aprés j'envoie cette ligne dans un fichier temp par exemple VERSION_temp.txt
[code:1]Select-String -Path \"ton fichier\" -Pattern \"la chaine que tu recherche\" > VERSION_temp.txt[/code:1]
pour le reste je sait pas comment faire mais tu as ouvert mon esprit
c'est pour récupérer la ligne
Perso aprés j'envoie cette ligne dans un fichier temp par exemple VERSION_temp.txt
[code:1]Select-String -Path \"ton fichier\" -Pattern \"la chaine que tu recherche\" > VERSION_temp.txt[/code:1]
pour le reste je sait pas comment faire mais tu as ouvert mon esprit
Connexion ou Créer un compte pour participer à la conversation.
- laucaz
-
Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 48
- Remerciements reçus 0
il y a 13 ans 4 mois #13652
par laucaz
Réponse de laucaz sur le sujet Re:Copier une info d'un fich vers un autre
...
merci ...
on avance
on avance
Connexion ou Créer un compte pour participer à la conversation.
- xyz
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 69
il y a 13 ans 4 mois #13654
par xyz
Tutoriels PowerShell
Réponse de xyz sur le sujet Re:Copier une info d'un fich vers un autre
titou4 écrit:
Une autre idée, peut être pas la plus performante :
[code:1]
$T=@\"
[production]
Chemin=.production
VERSION=X999999999999
\"@
$S= $T -Split \"`n\"
$T=@\"
[production]
Chemin=.production
VERSION=Z00000
\"@
$S2= $T -Split \"`n\"
$PatternNew='VERSION=X999999999999'
$Patternold='^\s*VERSION=.*'
$S3=$S2|% {$_ -Replace $patternOld,($S|Select-string $PatternNew).Line}
$s;$s2;$s3
[/code:1]
Il y a surement une une autre solution avec la fonction Replace-String, pour la v2
C'est le principal !on avance
Une autre idée, peut être pas la plus performante :
[code:1]
$T=@\"
[production]
Chemin=.production
VERSION=X999999999999
\"@
$S= $T -Split \"`n\"
$T=@\"
[production]
Chemin=.production
VERSION=Z00000
\"@
$S2= $T -Split \"`n\"
$PatternNew='VERSION=X999999999999'
$Patternold='^\s*VERSION=.*'
$S3=$S2|% {$_ -Replace $patternOld,($S|Select-string $PatternNew).Line}
$s;$s2;$s3
[/code:1]
Il y a surement une une autre solution avec la fonction Replace-String, pour la v2
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- laucaz
-
Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 48
- Remerciements reçus 0
il y a 13 ans 4 mois #13657
par laucaz
Réponse de laucaz sur le sujet Re:Copier une info d'un fich vers un autre
.... merci Laurent
Si tu permets... juste une p'tite explication de texte ...
Une autre question si je peux
ce qui 'il y a derrière \"VERSION=\" est libre donc puis-je utiliser un caractère générique de type * par exemple ?
Cela dit je test dès que j'arrive au bureau ... demain
parce que là ... ca va bien pour un ... quel jour on est dejà !!!!
@+
Si tu permets... juste une p'tite explication de texte ...
On stocke ce qu'on cherche dans la variable $T$T=@\"
[production]
Chemin=.production
VERSION=X999999999999
\"@
Je ne comprend pas ce qu'on split, tu pourrais me dire à quoi sert le \"`n\" ?$S= $T -Split \"`n\"
Une autre question si je peux
Cela dit je test dès que j'arrive au bureau ... demain
@+
Connexion ou Créer un compte pour participer à la conversation.
- xyz
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 69
il y a 13 ans 4 mois #13658
par xyz
Tutoriels PowerShell
Réponse de xyz sur le sujet Re:Copier une info d'un fich vers un autre
titou4 écrit:
titou4 écrit:
.* = zéro ou n caractères
Ensuite si le contenu de l'entrée Version est normée ce sera différent. De plus cette regex récupère les espaces avant et après. Il faudrait ajouter ce contrôle.
titou4 écrit:
La here-String (@\" ... \" @) ne formate pas les lignes avec Cr+LF, mais seulement avec LF. D'ou le `nJe ne comprend pas ce qu'on split, tu pourrais me dire à quoi sert le \"`n\" ?
titou4 écrit:
La regex le prend déjà en compte :donc puis-je utiliser un caractère générique de type * par exemple ?
.* = zéro ou n caractères
Ensuite si le contenu de l'entrée Version est normée ce sera différent. De plus cette regex récupère les espaces avant et après. Il faudrait ajouter ce contrôle.
titou4 écrit:
Vendredi !quel jour on est dejà !!!!
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.044 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Copier une info d'un fich vers un autre