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 :

extraire plusieurs colonnes du contenu d'un fichier en utilisant la boucle for [Batch]


Sujet :

Scripts/Batch

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 11
    Points : 7
    Points
    7
    Par défaut extraire plusieurs colonnes du contenu d'un fichier en utilisant la boucle for
    Bonjour,

    Je souhaiterais extraire à partir plusieurs fichier "csv" le contenu de certaines colonnes vers un seul fichier "txt"

    j'ai écrit le script suivant qui fonctionne uniquement sur une seul colonnes et embarque un seul fichier à la fois.

    @echo off
    setlocal enabledelayedexpansion


    for /f "skip=1 tokens=1" %%i in (*.xls) do (
    set "$Ligne=%%i"
    set "$Ligne=!$Ligne:" "=" "!"
    echo !$Ligne:" "=" "!
    ) >>tempo.txt


    J'avoue avoir un peu de mal
    En PJ le fichier ".xls"
    Fichiers attachés Fichiers attachés
    • Type de fichier : xls 1.xls (171,4 Ko, 749 affichages)

  2. #2
    Membre à l'essai
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2016
    Messages : 9
    Points : 12
    Points
    12
    Par défaut
    Bonjour,

    Quand tu veux dire le contenu de certaines colonnes, tu veux dire certaines colonnes qui ont telles valeurs ou seulement la liste d'une colonne A ou dispatcher la colonne A de ta colonne B ?

    Merci d'avance.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Oui en effet, je voudrais obtenir le resultat de la colonne A , B et J du ou des fichier "xls" dans mon fichier tempo.txtr

  4. #4
    Membre à l'essai
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2016
    Messages : 9
    Points : 12
    Points
    12
    Par défaut
    Si tu veux séparer les colonnes que tu souhaites prendre, il faudrait que tu les délimites par un caractère spécifique.
    En effet, par exemple mettre un ; pourrait servir de délimitation.

    Effectivement, si tu devais utiliser les espaces, cela ne pourrait pas fonctionner correctement car tu as certaines colonnes qui ont moins d'espace que d'autres.

    Exemple :

    test.txt Contenu :

    test encore; deuxième test; troisième test;
    une fois; deux fois; trois fois
    Script.bat

    for /f "tokens=1,2,3 delims=;" %%a in (test.txt) do echo %%a %%b %%c>>Resultat.txt
    Info sur Script.bat : Pour chaque tokens (1,2,3) à chaque délimitateur (le ";") dans le fichier test.txt, afficher le résultat avant le premier ; dans %%a, le deuxième résultat dans %%b et le troisième résultat dans %%c et mettre le contenu dans un nouveau fichier appelé Resultat.txt

    Il me parait difficile de faire autrement ou auquel cas je ne sais pas plus

  5. #5
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 183
    Points : 5 754
    Points
    5 754
    Par défaut
    Bonjour,

    Le fichier n'a pas d'espace en tant que séparateur mais une tabulation.
    La conservation de l’en-tête n'étant pas spécifié je la supprime.

    Délimiteur = 'tabulation'
    Tokens = On prend la colonne 1, 2 et 10 (A, B et J)
    Skip = On ne conserve pas l'en-tête (première ligne)


    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    del tempo.txt
    for /f "skip=1 tokens=1,2,10 delims=	" %%a in (1.xls 2.xls) do echo %%a	%%b	%%c>>tempo.txt

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Super c'est exactement ça , je viens de comprendre ou était mon erreur.
    Par contre suis-je obligé d'écrire en dure les nom de fichier xls dans la parenthese ?
    Si j'ai 10 fichier xls en entrée avec des nom long ça va faire une sacrée commande.

  7. #7
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 183
    Points : 5 754
    Points
    5 754
    Par défaut
    Tu veux mettre le nom des fichier dans des variables ou tu as un critère de sélection ?

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par ericlm128 Voir le message
    Tu veux mettre le nom des fichier dans des variables ou tu as un critère de sélection ?
    Oui des variables.
    les fichiers en entrée sont issues d'une extractions automatique qui incremente des numéros, des dates... donc les fichiersne portent pas le même nom, le seul commun est l'extension ".xls"

  9. #9
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 183
    Points : 5 754
    Points
    5 754
    Par défaut
    Si tu doit traiter tous les fichiers ayant l'extension xls je te propose ceci

    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    del res.txt
    for %%z in (*.xls) do for /f "skip=1 tokens=1,2,10 delims=	" %%a in (%%z) do @echo %%a	%%b	%%c>>res.txt

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Merci beaucoup cela réponds parfaitement à mes interrogations et va me faire avancer dans ma réflexion.

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

Discussions similaires

  1. [PowerShell] Extraire des colonnes non déterminées d'un fichier csv et export en csv
    Par stefeux dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 21/10/2015, 09h22
  2. [Batch] Contenu d'un fichier texte dans une boucle for
    Par jedjej dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 21/11/2014, 14h26
  3. Réponses: 1
    Dernier message: 16/08/2011, 17h46
  4. Réponses: 3
    Dernier message: 13/07/2011, 16h55
  5. Réponses: 3
    Dernier message: 16/04/2009, 15h00

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