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 :

[résolu] interprétation de virgule dans une variable


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Mars 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Mars 2018
    Messages : 2
    Par défaut [résolu] interprétation de virgule dans une variable
    Bonjour,
    j'ai fait un script en ps pour extraire des lignes de fichiers sources et les copier vers des fichiers destinations.
    tout marche bien sauf mon filtre du Select-String -pattern.
    je passe dans ma variable $FiltreCommuneInsee des valeurs chaine du style ^"090122",^"090111" .... le but est de sélectionner dans le fichier source les lignes qui commencent par 090122 ou les lignes qui commencent par 090111

    j'ai testé sans la variable en tapant en dur les valeurs recherchées (^"090122",^"090111") cela fonctionne. quand j'utilise la variable, $FiltreCommuneInsee, elle prend la bonne valeur (^"090122",^"090111") mais cela ne fonctionne pas dans le Select-String.
    Je pense que le script n’interprète pas les séparateurs (les virgules) contenu dans la variable, et au lieu de filtrer avec les valeurs une à une, il cherche l'ensemble de la chaine... et du coup il ne trouve aucune ligne dans le fichier source et me créé les nouveaux fichiers mais vide...
    voilà, c'est bref mais j'espère que vous avez assez d'éléments pour me donner un coup de pousse pour que je puisse débloquer ce script.

    par avance merci de votre disponibilité et de votre soutien,


    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
    function Get-ExportMajic{
    
        # Préparation
        ## Nettoyage du repertoire de destination
    
        del D:\TRAITEMENT\EXPORT\A_ENVOYER\MAJIC\* -Recurse
    
    	# Traitement
        ## On liste les fichiers MAJIC du répertoire Source, on récupère la première ligne et on créé les fichiers pour export en incluant la première ligne
             
        $SourceMajic = 'D:\DONNEES\REFERENTIEL\MAJIC\TEST\'        
        $ListeFichierMajic = dir $SourceMajic       
            
             
        foreach ($FichierMajic in $ListeFichierMajic) {         
             $PremiereLigne = Get-Content -path $SourceMajic$FichierMajic | Select-Object -Index 0       
             Add-Content -path D:\TRAITEMENT\EXPORT\A_ENVOYER\MAJIC\$FichierMajic -value $PremiereLigne
        }
        
        ## récupère les lignes de chaque commune dans les différents fichiers et les agrègent dans les nouveaux fichiers.  
    	foreach ($FichierMajic in $ListeFichierMajic) {
    	$FiltreCommuneInsee =""
    		Import-Csv D:\TRAITEMENT\EXPORT\liste_commune.csv | foreach {
    		$CommuneInsee = $_.codeinsee
    		$FiltreCommuneInsee = $FiltreCommuneInsee+"^`"090$CommuneInsee`","
    		}
    	$FiltreCommuneInsee = $FiltreCommuneInsee.Substring(0, $FiltreCommuneInsee.Length-1);
    	write-host "Traitement du fichier $FichierMajic" -ForegroundColor Cyan
    	$NouveauContenu= Get-Content -path $SourceMajic$FichierMajic | Select-String -pattern $FiltreCommuneInsee
    	Add-Content -path D:\TRAITEMENT\EXPORT\A_ENVOYER\MAJIC\$FichierMajic -value $NouveauContenu
    	}
    }

  2. #2
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Salut,
    tu cherches à construire une alternative ?
    Code Powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $code=@('122','111','233')
    $ofs='|^090'
    $('(^090'+$code+')')
    #(^090122|^090111|^090233)
    Je ne pense pas que la virgule soit un métacaractère de regex.

  3. #3
    Nouveau candidat au Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Mars 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Mars 2018
    Messages : 2
    Par défaut
    ok c'est résolu. il fallait déclarer la variable $FiltreCommuneInsee en tableau. du coup cela va beaucoup dans le select string!
    merci pour le temps passé dessus et ta réponse qui m'a mis la puce à l'oreille...

Discussions similaires

  1. Interprétation des \\ dans une variable
    Par vince2005 dans le forum Shell et commandes POSIX
    Réponses: 2
    Dernier message: 13/11/2016, 17h11
  2. Ne pas interpréter des caractères dans une variable.
    Par bob737 dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 16/04/2015, 11h05
  3. affecter le premier chiffre apres la virgule dans une variable
    Par kroma23 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/05/2011, 09h09
  4. Réponses: 4
    Dernier message: 03/08/2009, 09h21
  5. Réponses: 3
    Dernier message: 13/03/2009, 15h20

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