Question
Foreach { ...substring...} et problèmes ;-)
- DUMOULIN
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 21
- Remerciements reçus 0
il y a 15 ans 6 mois #7702
par DUMOULIN
Foreach { ...substring...} et problèmes ;-) a été créé par DUMOULIN
Bonjour à tous,
Je commence tout juste en PowerShell, et je me heurte à un blocage sur l'extraction de chaînes de caractères. Voici ce que j'ai fait pour le moment :
Le contenu du fichier obtenu après manipulation :
[code:1]2K3EE_CD_7984_86
2K3SE_CD_7984_86
2K3SE_CD_7941_86
2K2EE_CD_7941_86
2K3SE_CD_7979_86
2K3EE_CD_7979_86
2K3SE_CD_7947_86[/code:1]Je ne dois en sortir que les 4 chiffres significatifs après le CD_
Quand je charge en variable une entrée et que je fais substring dessus, ça marche :
[code:1]$test=\"2K3EE_CD_7984_86\"
$test.substring(9,4)
7984[/code:1]
Mais quand j'essaie de parcourir le fichier, je lance ça :
[code:1]$test = get-content TS.txt
foreach {$test.SubString (9,4)}[/code:1]
Il m'insulte violemment, et en plus il doit avoir raison... :
[code:1]Missing opening '(' after keyword 'foreach'.
Au niveau de ligne : 1 Caractère : 9
+ foreach <<<< {$test.SubString (9,4)}
+ CategoryInfo : ParserError: (OpenParenToken:TokenId) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : MissingOpenParenthesisAfterKeyword[/code:1]
Merci de votre aide, j'ai essayé beaucoup de \"combinaisons\", fouillé sur le net et surtout sur le forum, mais je n'ai rien trouvé.
Alexis
Je commence tout juste en PowerShell, et je me heurte à un blocage sur l'extraction de chaînes de caractères. Voici ce que j'ai fait pour le moment :
Le contenu du fichier obtenu après manipulation :
[code:1]2K3EE_CD_7984_86
2K3SE_CD_7984_86
2K3SE_CD_7941_86
2K2EE_CD_7941_86
2K3SE_CD_7979_86
2K3EE_CD_7979_86
2K3SE_CD_7947_86[/code:1]Je ne dois en sortir que les 4 chiffres significatifs après le CD_
Quand je charge en variable une entrée et que je fais substring dessus, ça marche :
[code:1]$test=\"2K3EE_CD_7984_86\"
$test.substring(9,4)
7984[/code:1]
Mais quand j'essaie de parcourir le fichier, je lance ça :
[code:1]$test = get-content TS.txt
foreach {$test.SubString (9,4)}[/code:1]
Il m'insulte violemment, et en plus il doit avoir raison... :
[code:1]Missing opening '(' after keyword 'foreach'.
Au niveau de ligne : 1 Caractère : 9
+ foreach <<<< {$test.SubString (9,4)}
+ CategoryInfo : ParserError: (OpenParenToken:TokenId) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : MissingOpenParenthesisAfterKeyword[/code:1]
Merci de votre aide, j'ai essayé beaucoup de \"combinaisons\", fouillé sur le net et surtout sur le forum, mais je n'ai rien trouvé.
Alexis
Connexion ou Créer un compte pour participer à la conversation.
- Alan Pinard
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 77
- Remerciements reçus 0
il y a 15 ans 6 mois #7705
par Alan Pinard
Alan Pinard
Version A
Réponse de Alan Pinard sur le sujet Re:Foreach { ...substring...} et problèmes ;-)
Bonjour Harfango,
En lisant ton code, j'ai remarqué qu'il y avait une erreur dans le bout suivant
[code:1]
$test = get-content TS.txt
foreach {$test.SubString (9,4)}
[/code:1]
Cela devrait plutôt être:
[code:1]
$test = get-content TS.txt
$Test | foreach {$_.SubString(9,4)}
[/code:1]
Le problème c'est que $Test est un tableau et toi tu veux pouvoir traiter chaque ligne du tableau. Dans le Foreach, tu prends le tableau au complet alors que c'est pour chaque ligne.
Essaie en changeant ceci et revient nous.
Cordialement,<br><br>Message édité par: Versiona, à: 31/08/10 18:48
En lisant ton code, j'ai remarqué qu'il y avait une erreur dans le bout suivant
[code:1]
$test = get-content TS.txt
foreach {$test.SubString (9,4)}
[/code:1]
Cela devrait plutôt être:
[code:1]
$test = get-content TS.txt
$Test | foreach {$_.SubString(9,4)}
[/code:1]
Le problème c'est que $Test est un tableau et toi tu veux pouvoir traiter chaque ligne du tableau. Dans le Foreach, tu prends le tableau au complet alors que c'est pour chaque ligne.
Essaie en changeant ceci et revient nous.
Cordialement,<br><br>Message édité par: Versiona, à: 31/08/10 18:48
Alan Pinard
Version A
Connexion ou Créer un compte pour participer à la conversation.
- DUMOULIN
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 21
- Remerciements reçus 0
il y a 15 ans 6 mois #7707
par DUMOULIN
Réponse de DUMOULIN sur le sujet Re:Foreach { ...substring...} et problèmes ;-)
Merci beaucoup !
C'est exactement ça, et j'ai en plus compris pourquoi
Bon, il va maintenant me falloir l'intégrer dans une boucle if... Je reviens si je ne m'en sors pas !
Merci encore,
Alexis
C'est exactement ça, et j'ai en plus compris pourquoi
Bon, il va maintenant me falloir l'intégrer dans une boucle if... Je reviens si je ne m'en sors pas !
Merci encore,
Alexis
Connexion ou Créer un compte pour participer à la conversation.
- Alan Pinard
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 77
- Remerciements reçus 0
il y a 15 ans 6 mois #7708
par Alan Pinard
Alan Pinard
Version A
Réponse de Alan Pinard sur le sujet Re:Foreach { ...substring...} et problèmes ;-)
Harfango écrit:
Excellent! Je te souhaite bonne continuation pour le restant de script.
C'est exactement ça, et j'ai en plus compris pourquoi
Excellent! Je te souhaite bonne continuation pour le restant de script.
Alan Pinard
Version A
Connexion ou Créer un compte pour participer à la conversation.
- Richard Lazaro
- Hors Ligne
- Membre platinium
-
Réduire
Plus d'informations
- Messages : 530
- Remerciements reçus 0
il y a 15 ans 6 mois #7710
par Richard Lazaro
Think-MS : (Get-Life).Days | %{ Learn-More }
\\"Problems cannot be solved by the same level of thinking that created them.\\" - Albert Einstein
Réponse de Richard Lazaro sur le sujet Re:Foreach { ...substring...} et problèmes ;-)
Bonjour,
Pour aller un peu plus loin :
- Si Get-Content ne contient pas de ligne, la cmdlet retournera $null
- Si Get-Content contient une ligne, la cmdlet retournera un seul objet
- Si Get-Content contient plusieurs lignes, la cmdlet retournera un tableau d'objet
Deplus, foreach permet de parcourir un tableau. Dans ton code il n'y a aucune référence à ce tableau.
Voici donc différents codes :
[code:1]
$test = get-content TS.txt
$test | foreach { $_.SubString(9,4) }
[/code:1]
[code:1]
$test = get-content TS.txt
foreach($ligne in $test) { $ligne.SubString(9,4) }
[/code:1]
[code:1]
get-content TS.txt | foreach { $_.SubString(9,4) }
[/code:1]
Puis attention, il n'y a pas d'espace entre la méthode (SubString) et les paramètres ((9,4)).
Bien Cordialement,
Richard Lazaro.
Pour aller un peu plus loin :
- Si Get-Content ne contient pas de ligne, la cmdlet retournera $null
- Si Get-Content contient une ligne, la cmdlet retournera un seul objet
- Si Get-Content contient plusieurs lignes, la cmdlet retournera un tableau d'objet
Deplus, foreach permet de parcourir un tableau. Dans ton code il n'y a aucune référence à ce tableau.
Voici donc différents codes :
[code:1]
$test = get-content TS.txt
$test | foreach { $_.SubString(9,4) }
[/code:1]
[code:1]
$test = get-content TS.txt
foreach($ligne in $test) { $ligne.SubString(9,4) }
[/code:1]
[code:1]
get-content TS.txt | foreach { $_.SubString(9,4) }
[/code:1]
Puis attention, il n'y a pas d'espace entre la méthode (SubString) et les paramètres ((9,4)).
Bien Cordialement,
Richard Lazaro.
Think-MS : (Get-Life).Days | %{ Learn-More }
\\"Problems cannot be solved by the same level of thinking that created them.\\" - Albert Einstein
Connexion ou Créer un compte pour participer à la conversation.
- DUMOULIN
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 21
- Remerciements reçus 0
il y a 15 ans 6 mois #7712
par DUMOULIN
Réponse de DUMOULIN sur le sujet Re:Foreach { ...substring...} et problèmes ;-)
Merci pour les précisions 
Je continue à avancer, et je dois dire que l'ensemble des ressources disponibles sur le site m'aident vraiment bien !
En parlant d'avancer, quels sont les avantages/inconvénients entre switch et if/elseif... ?
Alexis
Je continue à avancer, et je dois dire que l'ensemble des ressources disponibles sur le site m'aident vraiment bien !
En parlant d'avancer, quels sont les avantages/inconvénients entre switch et if/elseif... ?
Alexis
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.043 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Foreach { ...substring...} et problèmes ;-)