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

Shell et commandes GNU Discussion :

Récupérer information dans fichier .txt


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2016
    Messages : 2
    Par défaut Récupérer information dans fichier .txt
    Bonjour,

    Je suis en train de créer un batch (première fois pour moi), qui me permet d'exécuter un programme de traitement d'imagerie médicale, pour plusieurs patients consécutifs, et je rencontre un problème pour une étape.

    J'ai besoin de faire tourner mon programme pour plusieurs patients à la suite, afin de ne pas relancer la commande pour le patient suivant, quand le patient précédent est terminé.
    J'ai un dossier source, dans lequel j'ai plusieurs sous-dossiers (un dossier pour chaque patient, contenant son image respective à traiter).
    J'ai créé un fichier texte, dans lequel j'ai fait la liste de tous les noms des dossiers des patients.

    Mon problème n°1 : j'aurai besoin d'une ligne dans mon Batch, qui dit au programme d'aller chercher dans ce fichier texte, le nom du dossier dans lequel il doit chercher l'image à traiter.

    Mon problème n°2 : comment indiquer au programme que quand il a fini le traitement d'un patient, d'aller rechercher dans cette liste.txt le patient suivant à traiter ?

    Merci d'avance !

    NeuroL

  2. #2
    Membre émérite Avatar de devilsnake88
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2013
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2013
    Messages : 453
    Par défaut
    Bonjour,
    Peut-être que ceci pourrait vous aider:
    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    @echo off&cls
     
    for /f "delims=" %%a in (patients.txt) do (
    	REM Ici on entre toutes les commandes/actions relatives a tout les clients de la liste
    	echo Patient en cours de traitement %%a
    )
    REM Une fois chaque entrees (clients) du fichier texte traités, on me en pause le script.
    pause
    exit

  3. #3
    Nouveau candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2016
    Messages : 2
    Par défaut
    Merci pour cette réponse ! Je vais regarder ça, j'espère y comprendre quelque chose, je suis vraiment novice en la matière.. ^^

    (j'ai oublié de préciser que je suis sous Linux pour un logiciel particulier, et il me semble que ce n'est pas exactement le même langage que sous Windows, j'ai entendu parlé de Shell.. est-ce que cela change quelque chose par rapoprt à l'aide que vous m'avez suggéré ?!)

    Merci encore beaucoup !

    NeuroL

  4. #4
    Membre émérite Avatar de devilsnake88
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2013
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2013
    Messages : 453
    Par défaut
    Cela change tout en effet, il faudra un script Shell (.sh) ou un autre langage qui n'est pas comme le Batch de Windows.
    Pouvez-vous me dire si votre logiciel Linux est exécuté via une machine virtuelle (vous l'ouvrez depuis Windows) ou si vous devez redémarrer l'ordinateur pour démarrer sous linux ou changer d'ordinateur?
    Merci de m'indiquer toutes les informations utiles concernant le cas du logiciel Linux.

  5. #5
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 660
    Par défaut
    Citation Envoyé par NeuroL
    J'ai besoin de faire tourner mon programme pour plusieurs patients à la suite, afin de ne pas relancer la commande pour le patient suivant, quand le patient précédent est terminé.
    J'ai un dossier source, dans lequel j'ai plusieurs sous-dossiers (un dossier pour chaque patient, contenant son image respective à traiter).
    J'ai créé un fichier texte, dans lequel j'ai fait la liste de tous les noms des dossiers des patients.

    Mon problème n°1 : j'aurai besoin d'une ligne dans mon Batch, qui dit au programme d'aller chercher dans ce fichier texte, le nom du dossier dans lequel il doit chercher l'image à traiter.

    Mon problème n°2 : comment indiquer au programme que quand il a fini le traitement d'un patient, d'aller rechercher dans cette liste.txt le patient suivant à traiter ?
    Bonjour,

    vous pouvez tout brûler, on va recommencer proprement. on va faire ça en shell (sh ou bash, selon les capacités de votre système, ou l'énoncé de votre execrice)
    en commençant par mettre un peu d'ordre dans tout ça :
    Citation Envoyé par NeuroL
    J'ai un dossier source, dans lequel j'ai plusieurs sous-dossiers (un dossier pour chaque patient, contenant son image respective à traiter).
    il faut donc parcourir l'arborescence du dossier source. Cela se fait avec une boucle for et le Développement de chemins (cf. man bash)
    y a-t-il d'autres fichiers dans le dossier personnel d'un patient ?
    le nom fichier image a-t-il un format qui permet de le reconnaître ?

    en attendant, profitez-en pour lire les tutos qui figurent dans ma signature.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  6. #6
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 292
    Par défaut
    Bonjour

    Comme la liste des dossiers à traiter a déjà été dressée, il est sans doute préférable d'alimenter une boucle while avec le contenu du fichier-liste.

    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while read dossier
    do
        ls "$dossier"
    done <fichier_liste.txt

  7. #7
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 349
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 349
    Par défaut
    Bonjour,

    Citation Envoyé par NeuroL Voir le message
    Mon problème n°1 : j'aurai besoin d'une ligne dans mon Batch, qui dit au programme d'aller chercher dans ce fichier texte, le nom du dossier dans lequel il doit chercher l'image à traiter.
    La commande en shell qui lit une ligne sur l'entrée standard est read:
    (le $ en début de ligne est mon prompt).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ read ligne
    ceci est une ligne saisie sur l entrée standart
    $ echo $ligne
    ceci est une ligne saisie sur l entrée standart
    un fichier peut être redirigé vers l'entrée standart via le chevron '<' :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $ cat fichier.txt 
    ligne 1 a traiter
    ligne 2 a traiter
    ligne 3 a traiter
    $ read ligne <fichier.txt 
    $ echo $ligne
    ligne 1 a traiter
    Donc pour l'instant, on ne sait lire que la première ligne d'un fichier via read qui rend la main par défaut, lorsque'il rencontre un retour chariot.
    Ce qui nous amène à ta 2éme question:
    Citation Envoyé par NeuroL Voir le message
    Mon problème n°2 : comment indiquer au programme que quand il a fini le traitement d'un patient, d'aller rechercher dans cette liste.txt le patient suivant à traiter ?
    Ici, il suffit de créer une boucle, qui lit ligne à ligne ton fichier et execute les actions en conséquences. On peut,comme le suggère Flodelarab, utiliser une boucle while couplé à la commande read et en redirigeant le fichier sur l'entrée standart mais non pas sur le read lui-même mais sur le bloc complet de la boucle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $ while read ligne
    do
     echo "$ligne"
    done <fichier.txt 
    ligne 1 a traiter
    ligne 2 a traiter
    ligne 3 a traiter
    Après, il y a d'autres possibilités via une boucle for comme le suggère N_BaH, mais pour cela, il faudrait avoir plus d'informations sur les commandes de traitements à exécuter et le modèle de ton arborescence.

Discussions similaires

  1. Récupérer données dans fichier .txt
    Par hugues6358 dans le forum Général Python
    Réponses: 25
    Dernier message: 09/12/2013, 09h08
  2. Réponses: 1
    Dernier message: 24/08/2013, 20h50
  3. Retirer des informations dans fichier .txt
    Par cricri77200 dans le forum Langage
    Réponses: 9
    Dernier message: 09/06/2009, 15h22
  4. Réponses: 3
    Dernier message: 29/09/2006, 16h27
  5. Donnee excel pour requete sql dans fichier txt ou doc
    Par Yogi_01 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 13/04/2006, 10h04

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