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écupération de variable Fichier CSV [Batch]


Sujet :

Scripts/Batch

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mars 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2014
    Messages : 9
    Points : 8
    Points
    8
    Par défaut Récupération de variable Fichier CSV
    bonjour Terre Tous,

    Voila j'ai un petit souci psyco-technique pour finir mon Batch... Je vous explique mon problème:

    Je voudrais récupérer une variable contenu dans un fichier CSV. J'ai un fichier csv qui se compose de la manière suivante:
    ip1;chemin1
    IP2;chemin2
    IP3;chemin3
    ...

    Je souhaiterai assigner le cheminX à une variable Y correspondant à la variable IPX.
    en gros mon résultat c'est ça :
    Si IP== IP1 alors Y=chemin1.

    Voici un bout de code :

    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
    @echo off 
     
    REM je récupere mon IP 
    for /F "tokens=15-18 delims=:." %%i in ('ipconfig^|find "Adresse IPv4"') do ( 
    set IP=%%i.%%j.%%k.%%l 
    ) 
     
    setlocal enabledelayedexpansion 
     
    REM Je mets chaque lignes de mon csv dans un tableau 
    set c=0 
    for /f "tokens= 1,2 delims=;" %%a in ('type D:\test.csv') do ( 
     Set table[!c!]=%%a  REM ===> colonne1 
     Set table[!d!]=%%b  REM ===> colonne2 
     Set /a c+=1 
     ) 
     
     
    REM Si mon ip se trouve dans une des valeurs du tableau alors il faut récupérer la variable chemin correspondante. 
    Set /a c-=1 
      
    For /L %%a in (0,1,%c%) do ( 
    if "%IP:~1%" == "!table[%%a]!" set test=table[%%b]! REM ==> c'est sur cette ligne au niveau du set que je n'arrive pas à récupéré %%b correspondant à %%a 
    )
    J'espère avoir été assez clair et précis
    Merci par avance pour votre aide !!! et merci quand même si vous ne savez m'aider

    mart

  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
    Points : 3 768
    Points
    3 768
    Par défaut
    Salut,

    Juste pour reproduire ton problème et que tu comprenne le cheminement avec ton code
    j' ai fait un fichier table.csv :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    1234;chemin1234
    5678;chemin5678
    9101112;chemin9101112
    l'IP récupererée par ton IPconfig et ici simulé dans la variable IPC

    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
    @ECHO OFF
     
    REM je récupere mon IP 
    
    set IPC=5678
     
    setlocal enabledelayedexpansion 
     
    REM Je mets chaque lignes de mon csv dans un tableau 
    set /a c=1 
    for /f "tokens= 1,2 delims=;" %%a in ('type table.csv') do ( 
     Set $IP[!c!]=%%a
     Set $Chemin[!c!]=%%b 
     Set /a c+=1 
     )
    
    set $ 
      
    For /L %%a in (0,1,!c!) do ( 
    if "%IPC%"=="!$IP[%%a]!" call set test=%%$Chemin[%%a]%%)
    
    Echo Chemin pour [%IPC%] = [%test%]
    En fait tu te prends un peu les pieds avec les variables.

    Voilà ! Analyse et tu devrais comprendre. Sinon retourne......


    SOLUTION II

    Tu peux faire le test directement lors de la lecture du fichier.csv ce qui t'évite de créer les variables de ta table et ça réduit pas mal le code :

    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
    @echo off 
     
    REM je récupere mon IP 
    
    set IPC=1234
    
    setlocal enabledelayedexpansion 
    
    set /a c=1 
    for /f "tokens= 1,2 delims=;" %%a in ('type table.csv') do ( 
     if "%IPC%"=="%%a" set chemin=%%b 
     Set /a c+=1 
     )
    
    Echo Chemin pour [%IPC%] = [!chemin!]
    ________________________________
    Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
    ________________________________

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mars 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2014
    Messages : 9
    Points : 8
    Points
    8
    Par défaut réponse
    Hello sachadee.

    Merci beaucoup pour ce retour. Je test demain et je reviendrai sûrement pour changer le statut de la discussion en résolu je pense . Tes explications sont nickelles ça me permet de comprendre mes erreurs.

    Bonne soirée à toi l'ami et encore merci! !

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mars 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2014
    Messages : 9
    Points : 8
    Points
    8
    Par défaut Retour d'expérience ;)
    Hello,

    Bon je viens de faire le test et effectivement Sachadee, le code de la solution 2 marche très bien quand je mais la variable "IPC" "manuellement", si je met ma variable avec la récupération d'IP, le script m'affiche le IPC mais pas le Chemin:


    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
    @echo off 
     
    REM je récupere mon IP 
    for /F "tokens=15-18 delims=:." %%i in ('ipconfig^|find "Adresse IPv4"') do ( 
    set IPC=%%i.%%j.%%k.%%l 
    ) 
    
    echo %IPC% ===>REM m'affiche bien mon IP
    setlocal enabledelayedexpansion 
    
    set /a c=1 
    for /f "tokens= 1,2 delims=;" %%a in ('type table.csv') do ( 
     if "%IPC%"=="%%a" set chemin=%%b 
     Set /a c+=1 
     )
    
    Echo Chemin pour [%IPC%] = [!chemin!] ===> REM m'affiche Chemin pour [ 10.X.X.108 ] = [] 

    Si je change
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    @echo off 
     
    REM je récupere mon IP 
    for /F "tokens=15-18 delims=:." %%i in ('ipconfig^|find "Adresse IPv4"') do ( 
    set IPC=%%i.%%j.%%k.%%l 
    ) 
    
    PAR IPC=X.X.X.X
    Alors j'obtiens bien: Chemin pour [ 10.X.X.108 ] = [\\chemmin\test]

    Je vais me pencher sur ça pour poster la solution dès que tout fonctionne ( ça doit surement intéresser du monde

    Merci à Sachadee et aux autres

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mars 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2014
    Messages : 9
    Points : 8
    Points
    8
    Par défaut Résolution
    Bon j'ai fini par avoir ce que je veux en récupérant l'adresse Mac des clients qui se connectent en TSE :

    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
    @echo off 
     
    REM je récupere mon IP 
    REM for /F "tokens=15-18 delims=:." %%i in ('ipconfig^|find "Adresse IPv4"') do ( 
    REM set IP=%%i.%%j.%%k.%%l 
    REM ) 
    setlocal enabledelayedexpansion 
    
    set /a c=1 
    for /f "tokens= 1,2 delims=;" %%a in ('type table.csv') do ( 
     if "%ViewClient_MAC_Address%"=="%%a" set chemin=%%b 
     Set /a c+=1 
     )
    
    Echo Chemin pour %ViewClient_MAC_Address% = !chemin!

    Encore Merci à Shachadee

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

Discussions similaires

  1. Récupération d'un fichier csv d'un site intranet
    Par itokia dans le forum Langages serveur
    Réponses: 1
    Dernier message: 30/03/2011, 15h19
  2. Récupération d'un fichier csv
    Par sverdo dans le forum Général Python
    Réponses: 2
    Dernier message: 08/02/2010, 11h25
  3. Réponses: 4
    Dernier message: 28/02/2007, 09h41
  4. Récupération fichier .csv
    Par Justin_C dans le forum Langage
    Réponses: 5
    Dernier message: 06/02/2007, 00h21
  5. Réponses: 12
    Dernier message: 27/01/2006, 11h07

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