IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

String pour récupération de valeurs [PowerShell]


Sujet :

Scripts/Batch

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2012
    Messages : 26
    Par défaut String pour récupération de valeurs
    Bonjour a tous, je dois extraire des données depuis un fichier txt (un extrait + bas)

    Jarrive a avoir les 3 premiers car. mais après ça se corse un peu, j'aimerai récupérer les valeurs décimales mais comme elles ne sont pas alignées, c'est compliqué !

    Comment fait-on en powerhsell pour lui dire de lire une ligne jusqu'a qu'il rencontre des chiffres ? Parce qu'ajouter des exceptions sur chaque ligne qui dépasse n'est pas très optimisé...

    Le contenu du fichier est ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
           ALL Albanian Leke       0.0074340297    134.51654614
    
            DZD Algerian Dinars     0.0082469583    121.25682706
    
            ARS Argentine Pesos     0.0578813786    17.276713586
    
            AUD Australian Dollars  0.6694986965    1.4936548873
    
            BSD Bahamian Dollars    0.9014716651    1.1092972067
    
            BHD Bahraini Dinars     2.3906948761    0.4182884274
    
            BDT Bangladeshi Taka    0.0111542552    89.651884687
    
            BBD Barbadian or Bajan Dollars  0.4507358326    2.2185944134
    
            BMD Bermudian Dollars   0.9014716651    1.1092972067
    
            BOB Bolivian Bolivianos 0.1304120671    7.6680020638
    
            BAM Bosnian Convertible Marka   0.5112918812    1.9558300001
    
            BWP Botswana Pula       0.0871054582    11.480336836
    
            BRL Brazilian Real      0.2911200286    3.4350092801
    
            GBP British Pounds      1.1648179859    0.8585032272
    
            BGN Bulgarian Leva      0.5109977354    1.9569558349
    
            XOF CFA Francs  0.0015244902    655.95700000
    
            XPF CFP Francs  0.0083800000    119.33174224
    
            CAD Canadian Dollars    0.6637425911    1.5066081542
    
            XAF Central African Francs      0.0015244902    655.95700000
    
            CLP Chilean Pesos       0.0013523874    739.43307181
    
            CNY Chinese Yuan Renminbi       0.1308417146    7.6428224956
    
            COP Colombian Pesos     0.0003130221    3194.6630468
    
            CRC Costa Rican Colones 0.0015796446    633.05379958
    
            HRK Croatian Kuna       0.1345665246    7.4312686828
    
            CUP Cuban Pesos 0.0340177987    29.396375977
    
            CZK Czech Koruny        0.0379392466    26.357929840
    si qq un pouvait me venir en aide, je lui serais très reconnaissant !

    Voilà le code que j'ai écrit pour le moment :

    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    $array = (Get-Content -path c:\temp\currency.txt)[24 .. 193] | where { $_ -ne "$null" } 
            foreach ($a in $array)
                {
                 #get currency code
                 $currencyCode = $a.substring(8,3)
                 write-output $currencyCode
                 #get currency name
                 $currencyname = $a.substring(12,15)
                 write-output $currencyname
                 #get currency Euro unit
                 $rateValueEur = $a.substring(25,19).TrimStart()
                 write-output $rateValueEur
                 $rateValueFr = [float]$rateValueEur * 6.55957
                 write-output $rateValueFr
              }

  2. #2
    Membre Expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Par défaut
    Salut,

    apparemment tu veux récuperer les 2 derniers élément de chaque ligne.

    Une méthode consiste à spliter chaque ligne dans un array. et récuperer array.length -1 et -2

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $fichier = Get-Content .\output.txt
    $fichier | foreach {
          $aItems = $_.split()
          write-host $aItems[$aItems.length-1]
          write-host $aItems[$aItems.length-2] 
        }

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2012
    Messages : 26
    Par défaut pas tout à fait
    Merci pour ton aide !

    Mais en fait je veux récupérer la 1ère valeur (le code sur 3 car) et la 3ème valeur, donc le premier nombre décimal (0.0074340297 pour ALL par exemple), de chaque ligne.

    Je ne sais pas comment faire pour spliter celà car les caractères dans le tableau ne sont pas alignés :-(

  4. #4
    Membre Expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Par défaut
    Je sais pas si j'ai pas capté qqe chose, mais :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $fichier = Get-Content .\output.txt
    $fichier | foreach {
          $aItems = $_.split()
          write-host $aItems[0]
          write-host $aItems[$aItems.length-2] 
        }

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2012
    Messages : 26
    Par défaut suite
    Voilà mon script complet :

    Je récupère les valeurs dans un fichier texte, je passe par ce fichier pour les valeurs que je mets dans ma base SQL. Le soucis c'est pour avoir les valeurs numériques (de la 3eme colonne)

  6. #6
    Membre Expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Par défaut
    ça te retourne le premier element et l'avant dernier il te suffit de les mettre dans une variable et
    de les traiter comme tu veux.

    Je vois pas le problème


  7. #7
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2012
    Messages : 26
    Par défaut
    En fait je veux récupérer la colonne 1 et 3...

  8. #8
    Membre Expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Par défaut
    la 1 ok sans problème !

    Maintenant la 3 ça ne va pas marcher vu que des fois tu as des valeurs en plus. C'est pour ça que je te propose l'avant dernière
    qui apparement fonctionnera toujours.


  9. #9
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2012
    Messages : 26
    Par défaut
    Oui ok, la 3ème mlaheureusement est celle qu'il me faut, par contre elle ne peut être calculée comme la dernière. En faisant un select string sur la ligne ce n'est pas possible ?

  10. #10
    Membre Expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Par défaut
    C'est quoi qui ne va pas dans ma solution ?

    Essaye le code tel quel (juste en changeant le nom du fichier)

    et tu comprendra

  11. #11
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2012
    Messages : 26
    Par défaut
    ok pour les codes pays (ALL, etc...) je n'avais pas de soucis pour ça, avec un substring ca fonctionne aussi, par contre c'est pour les valeurs de la troisième colonnes que ca coincent. J'ai essayé ton code et je n'ai aucune valeur en sortie.

  12. #12
    Membre Expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Par défaut
    Ok,

    J'ai créer un fichier output.txt contenant :

    ALL Albanian Leke 0.0074340297 134.51654614
    DZD Algerian Dinars 0.0082469583 121.25682706
    ARS Argentine Pesos 0.0578813786 17.276713586
    AUD Australian Dollars 0.6694986965 1.4936548873
    BSD Bahamian Dollars 0.9014716651 1.1092972067
    BHD Bahraini Dinars 2.3906948761 0.4182884274
    BDT Bangladeshi Taka 0.0111542552 89.651884687

    si je lançe mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $fichier = Get-Content .\output.txt
    $fichier | foreach {
          $aItems = $_.split()
          write-host $aItems[0]
          write-host $aItems[$aItems.length-2] 
        }

    j'ai en sortie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    ALL
    0.0074340297
    DZD
    0.0082469583
    ARS
    0.0578813786
    AUD
    0.6694986965
    BSD
    0.9014716651
    BHD
    2.3906948761
    BDT
    0.0111542552
    ça fonctionne parfaitement


  13. #13
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2012
    Messages : 26
    Par défaut
    Ah oui ok, ça marche aussi dans mon code, merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 9
    Dernier message: 23/02/2012, 18h33
  2. [XL-2007] Récupération des valeurs d'un fichier pour les copier dans un autre
    Par stelme dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 05/11/2011, 06h00
  3. [XL-2003] récupération des 2 derniers chiffres d'une cellule pour comparer à une valeur
    Par jf29840 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/04/2011, 10h57
  4. #VALEURMULTI pour récupération valeur
    Par Charly_An dans le forum Deski
    Réponses: 2
    Dernier message: 09/07/2008, 15h24
  5. [Upload] récupération de valeur pour un type "file"
    Par carusier dans le forum Langage
    Réponses: 4
    Dernier message: 28/03/2007, 17h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo