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 :

Extraction données fichier texte


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2010
    Messages : 4
    Par défaut Extraction données fichier texte
    Bonjour à tous, je demande votre aide car je n'arrive pas à effectuer la manip suivante:

    J'ai besoin de renommer un fichier en utilisant une partie de son contenu. Après avoir lu pas mal de posts sur le net et sur ce site, j'ai essayé d'utiliser la commande FOR /F pour récupérer la chaine de caractéres dont j'ai besoin mais ensuite je n'arrive pas a extraire une partie de cette chaine pour l'utiliser pour renommer le fichier.

    Voici les 4 premières lignes du fichier (ticket.txt):

    08FEB10/1327L(LYS)


    ITINERARY RECEIPT FOR ELECTRONIC TICKET NUMBER 160-3644708021

    Je voudrais récupérer la chaine "160-XXXXXXXXXX" sachant que seul le "160" est fixe, le reste variant à chaque création du fichier "eticket.txt". Pour info, cette chaine de caractères est toujours située à la meme position dans ce fichier...

    La commande suivante affiche bien les 7e champs de chaque ligne mais je voudrais sortir de la boucle lorsque les 4 premiers caractères de la chaine sont "160-" et ensuite utiliser les 10 caractères suivants pour les utiliser dans le nouveau nom de fichier (renommer ou copier sous un autre nom):

    FOR /F "tokens=7 delims= " %%i in (c:\eticket.txt) do @echo %%i

    J'ai essayé avec:
    set prefixe=%%i:~0,3%%
    mais rien ne fonctionne, je n'obtient pas le résultat escompté donc je ne peux pas utiliser de IF pour sortir de la boucle et cinder cette chaine en 2 parties...

    Merci d'avance pour votre aide...
    Cordialement

  2. #2
    Membre Expert
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Par défaut
    Citation Envoyé par Postit92 Voir le message

    FOR /F "tokens=7 delims= " %%i in (c:\eticket.txt) do @echo %%i
    salut,

    as-tu essayer de faire un Break ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    FOR /F "tokens=7 delims= " %%i in (c:\eticket.txt) do set "chaine=%%i" & goto:break
    
    :break
    echo %chaine% 
    pause

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2010
    Messages : 4
    Par défaut
    Bonjour a tous,

    Je remercie ceux qui m'on deja répondu.

    J'ai essayé avec:
    FOR /F "tokens=7 delims= " %%i in ('type eticket.txt^|Find "160" ') do @echo %%i

    et j'obtiens bien le numero de billet "160-3644708021" affiché à l'écran ce qui veut dire que la variable %%i contient la valeur que je veux reutiliser pour copier le fichier sous un autre nom (exemple eticket.txt --> 160-3644708021.txt)

    J'ai beau essayé toutes sortes de synthaxes trouvées sur ce forum pour copier mon fichier d'origine mais rien ne fonctionne:
    copy c:\eticket.txt c:\%%i.txt
    copy c:\eticket.txt c:\"%%i".txt
    copy c:\eticket.txt c:\!%%i!.txt


    meme en passant par une variable intermediaire:
    set chaine=%%i
    @echo !chaine! affiche %i
    @echo %chaine% affiche ECHO IS OFF.

    Un truc de dingue ce language batch, je regrette le language C !!

  4. #4
    Membre Expert
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Par défaut
    Citation Envoyé par Postit92 Voir le message
    Bonjour a tous,

    Je remercie ceux qui m'on deja répondu.

    J'ai essayé avec:
    FOR /F "tokens=7 delims= " %%i in ('type eticket.txt^|Find "160" ') do @echo %%i

    et j'obtiens bien le numero de billet "160-3644708021" affiché à l'écran ce qui veut dire que la variable %%i contient la valeur que je veux reutiliser pour copier le fichier sous un autre nom (exemple eticket.txt --> 160-3644708021.txt)

    J'ai beau essayé toutes sortes de synthaxes trouvées sur ce forum pour copier mon fichier d'origine mais rien ne fonctionne:
    copy c:\eticket.txt c:\%%i.txt
    copy c:\eticket.txt c:\"%%i".txt
    copy c:\eticket.txt c:\!%%i!.txt


    meme en passant par une variable intermediaire:
    set chaine=%%i
    @echo !chaine! affiche %i
    @echo %chaine% affiche ECHO IS OFF.

    Un truc de dingue ce language batch, je regrette le language C !!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    FOR /F "tokens=7 delims= " %%i in ('type eticket.txt^|Find "160" ') do set "var=%%i"
    echo %var%
    qu'est ce qu'il t'affiche ?

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    240
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2008
    Messages : 240
    Par défaut
    Bonjour

    --Code testé ---

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    @echo off
    FOR /F "tokens=7 delims= " %%i in ('type eticket.txt^|Find "160" ') do ( copy eticket.txt "%%i.txt"
    )
    
    pause
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    @echo off
    SETLOCAL EnableDelayedExpansion
    
    FOR /F "tokens=7 delims= " %%i in ('type eticket.txt^|Find "160" ') do set txt=%%i
    )
    copy eticket.txt "!txt!.txt"
    ENDLOCAL
    pause

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2010
    Messages : 4
    Par défaut
    Nickel ca marche !!

    Les commandes:
    FOR /F "tokens=7 delims= " %%i in ('type eticket.txt^|Find "160" ') do set "var=%%i"
    @echo %var%

    affichent bien "160-3644708021" comme prévu.

    Donc j'en ai profité pour essayer de copier le fichier:
    copy c:\eticket.txt c:\%var%.txt et ca marche !!

    Comme le but final était de créer un fichier pdf, j'ai testé avec la ligne de commande que j'utilisais pour TXTTOPDF.EXE:
    c:\txttopdf.exe c:\%var%.txt c:\%var%.pdf -PFS10 -PTM0 -PBM80 -pln
    et ca marche nickel aussi !

    Du coup en simplifiant un peu ca donne:
    @echo off
    FOR /F "tokens=7 delims= " %%i in ('type eticket.txt^|Find "160" ') do set "var=%%i"
    c:\txttopdf.exe c:\eticket.txt c:\%var%.pdf -PFS10 -PTM0 -PBM80 -pln


    Grace a votre aide, le numéro de billet inclus dans le fichier eticket.txt me permet de créer le fichier numerodebillet.pdf

    Bravo et merci
    Cordialement
    €ric

  7. #7
    Membre Expert
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Par défaut
    merci aussi à Acris

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2010
    Messages : 4
    Par défaut Extraction données fichier texte [Résolu]
    Oui merci a tous !!

    J'espere que ca pourra servir a d'autres...

Discussions similaires

  1. récupération données (fichier texte)
    Par Elstak dans le forum C
    Réponses: 9
    Dernier message: 21/04/2007, 17h35
  2. recupération données fichier texte
    Par Elstak dans le forum C
    Réponses: 2
    Dernier message: 25/03/2007, 00h28
  3. Données fichier texte vers BDD
    Par dr_octopus74 dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 08/02/2007, 15h54
  4. [VBA-E] Récupération données fichier texte
    Par Theo28fr dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 20/07/2006, 08h08
  5. [VBA-E] Tableau de données <=> Fichier Texte
    Par P50 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/12/2005, 16h02

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