Question Copier une info d'un fich vers un autre

Plus d'informations
il y a 13 ans 4 mois #13650 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... :blush:

Si une bonne âme pouvait me donner quelques tuyaux ...

@+

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

Plus d'informations
il y a 13 ans 4 mois #13651 par COTTIN
[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

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

Plus d'informations
il y a 13 ans 4 mois #13652 par laucaz
... :-) merci ...

on avance ;-)

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

Plus d'informations
il y a 13 ans 4 mois #13654 par xyz
titou4 écrit:

on avance ;-)

C'est le principal !
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.

Plus d'informations
il y a 13 ans 4 mois #13657 par laucaz
.... merci Laurent

Si tu permets... juste une p'tite explication de texte ...

$T=@\"

[production]

Chemin=.production

VERSION=X999999999999

\"@

On stocke ce qu'on cherche dans la variable $T

$S= $T -Split \"`n\"

Je ne comprend pas ce qu'on split, tu pourrais me dire à quoi sert le \"`n\" ?

Une autre question si je peux :huh: 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à !!!!:blink:

@+

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

Plus d'informations
il y a 13 ans 4 mois #13658 par xyz
titou4 écrit:

Je ne comprend pas ce qu'on split, tu pourrais me dire à quoi sert le \"`n\" ?

La here-String (@\" ... \" @) ne formate pas les lignes avec Cr+LF, mais seulement avec LF. D'ou le `n
titou4 écrit:

donc puis-je utiliser un caractère générique de type * par exemple ?

La regex le prend déjà en compte :
.* = 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:

quel jour on est dejà !!!!:blink:

Vendredi !

Tutoriels PowerShell

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

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