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

MATLAB Discussion :

Sauvegarde de données dans un fichier .txt [Débutant]


Sujet :

MATLAB

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 401
    Points : 102
    Points
    102
    Par défaut Sauvegarde de données dans un fichier .txt
    Bonjour à tous,

    J'ouvre ici un sujet indépendant pour réaliser un programme non lié à ce que je fais d'habitude. Il s'agit d'un programme qui me serait utile dans la vie de tous les jours.

    Voici d'abord le problème : je souhaite faire un programme qui, si je le lance, me permet de choisir un répertoire quelconque et qui pour ce répertoire recherche tous les fichiers d'extension .jpg et qui enfin me crée un fichier .txt avec le nom de ces fichiers .jpg dans leur ordre d'apparition et sans l'extension .jpg.

    Par exemple si un répertoire comprend :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    photo1.jpg
    photo2.jpg
    Je voudrais générer un fichier .txt dans le répertoire courant qui comporte :

    Donc, pour résumer il s'agit simplement d'écrire la liste des élément d'un répertoire mais seulement pour un certain type de fichier de ce répertoire (ici des .jpg). Existe-t-il une fonction déjà faite qui puisse faire cela ?

    Sinon j'ai entamé un code archaïque :

    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
    function liste_mp3
     
    %Pour l'instant on travaille avec des jpg pour tester.
     
    %on stocke dans repertoire le nom du repertoire où on recherche les
    %éléments.
     
    repertoire=uigetdir;
     
    %recherche des éléments dans le repertoire (qui ne doit pas comporter
    %d'éspace)
     
    a='dir';
    b=' ';
    c=repertoire;
    d='\*.jpg'
    e='/b';
    elements_repertoire=[a,b,c,d,b,e];
     
    [c w]=dos(elements_repertoire);
     
    w=strfind(w,'.jpg');
     
    %Ecriture dans un fichier .txt des résultats ?
     
    end
    Celui-ci marche mais je ne sais pas comment écrire le contenu de "w" dans un fichier .txt et dans le répertoire courant. Cependant il y a un souci avec ce code : il s'agit d'un problème classique : si dans la ligne repertoire que je récupère avec uigetdir il y a un espace (par exemple : C:/Documents And Settings/...) et bien la commande dos ne fonctionne plus : le répertoire n'est pas trouvé. Peut-on pallier à ce problème malgré tout ? Parce que sinon je suis contraint de mettre intentionnellement les répertoire à analyser sur ma machine en des endroits sans espace.

    Enfin, admettons que j'obtienne un code fonctionnel .m ; existe-t-il un moyen de le compiler (à la manière de la génération d'un .exe en C par exemple) de sorte que je puisse l'utiliser sur une autre machine qui elle n'a pas Matlab installé dessus ? Dans l'idéal j'aimerais avoir un programme que je lance sur n'importe quel machine, qui me demande le répertoire à traiter et me sors un fichier .txt faisant la liste des éléments .jpg

    EDIT:

    Pour l'écriture des résultats j'ai essayé quelque chose comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    %Ecriture dans un fichier .txt des résultats ?
     
    fid=fopen('photos.txt','w');
    fprintf(fid,'%s',w);
    Mais ceci ne fait rien.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Pourquoi passer par le dos alors que tu as la fonction dir ?
    Comment lister les fichiers d'une certaine extension dans un répertoire ?

    Sinon évite d'écraser w : w=strfind(w,'.jpg'); si tu souhaites récupérer les chaînes à partir de ces indices de sortie.
    Et le mieux est d'effectuer un split de w selon le caractère de retour à la ligne.

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 401
    Points : 102
    Points
    102
    Par défaut
    WInjerome, merci effectivement je n'ai pas fait attention. Et pour écrire dans le fichier .txt je crois que je m'y prends mal.

    Et d'autre part il n'existe donc pas une fonction toute faite pour faire ce que je veux ?

    Et en ce qui concerne la compilation, est-ce possible ?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par abel413 Voir le message
    Et d'autre part il n'existe donc pas une fonction toute faite pour faire ce que je veux ?
    Pas à ma connaissance.

    Citation Envoyé par abel413 Voir le message
    Et en ce qui concerne la compilation, est-ce possible ?
    Encore une fois, la Applications déployées exécutables sans MATLAB

    Par contre passer par MATLAB pour cela, c'est un peu prendre un bazooka pour tuer la petite mouche

  5. #5
    Membre régulier
    Homme Profil pro
    Thésard
    Inscrit en
    Mars 2013
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Thésard
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2013
    Messages : 54
    Points : 78
    Points
    78
    Par défaut
    Salut,

    Je ne sais pas si tu as fini par t'en sortir. Autrement je pense que mon code doit faire ce que tu souhaites faire.

    En ce qui concerne la compilation et vu la complexité du code, je te conseille de le réécrire en C/C++. La compilation n'en sera que plus simple et tu n'auras pas besoin de MCR pour le faire tourner.


    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
    clear all;
    close all;
    clc;
     
    Extension = '.JPG';
     
    PathName = uigetdir('Please, select a directory');
    ListInDir = dir(fullfile(PathName,strcat('*',Extension)));
     
    fid = fopen(fullfile(PathName,'photos.txt'), 'w');
    for i=1:1:numel(ListInDir)
        pos = strfind(ListInDir(i).name, Extension);
        writer = fprintf(fid, [ListInDir(i).name(1:pos-1) '\n']);
    end
    fclose(fid);

  6. #6
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 401
    Points : 102
    Points
    102
    Par défaut
    Winjerome

    D'accord, après lecture, je me rends compte que la tâche est assez ardue et inutile. Mieux faudrait-il donc écrire ce programme en un langage compilé, comme le C.

    betaplus

    Merci beaucoup pour ton effort. Je viens de tester ta fonction. Elle semble fonctionner : répertoire bien détecté, .jpg aussi ect mais l'écriture ne se passe pas bien. Si j'ouvre le photo.txt généré avec le bloc note, voici ce que j'ai dedans :

    Par contreavec Notepadd++, j'obtiens :

    Ce qui est correct, les .jpg portant les noms 1.jpg,2.jpg..mais alors pourquoi cela ne marche-t-il pas avec le bloc-note ?

    En ce qui concerne la variante en C/C++, il se trouve que je ne pratique plus trop ces langages. Penses-tu qu'il soit ardu de réécrire ton code dans ces langages ?

  7. #7
    Invité
    Invité(e)
    Par défaut
    Pour séparer ton extension, tu peux aussi utiliser fileparts :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [~, name] = fileparts(ListInDir(i).name)
    Mais c'est limite inutile ici car tous tes fichiers se terminent par .jpg, tu peux donc te contenter de ListInDir(i).name(1:end-4).

    Sinon, préfère mettre le format :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    writer = fprintf(fid, '%s\n', ListInDir(i).name(1:end-4) );
    En ce qui concerne le C, il suffit de regarder la FAQ

  8. #8
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 53 166
    Points
    53 166
    Par défaut
    Citation Envoyé par abel413 Voir le message
    qui enfin me crée un fichier .txt avec le nom de ces fichiers .jpg dans leur ordre d'apparition et sans l'extension .jpg.
    Tu peux utiliser un fichier batch, par exemple list.bat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    @echo off
     
    if exist list.txt (del list.txt)
     
    for /f %%i in ('dir /b %1\*.txt') do echo %%~ni >> list.txt
    Il suffit de passer le chemin du dossier où sont contenus les fichiers jpeg.

    Avec MATLAB :

    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  9. #9
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 401
    Points : 102
    Points
    102
    Par défaut
    Merci Winjerome pour ces précisions. Je ne suis pas encore au point en ce qui concerne le C mais bon il doit certainement y avoir plus simple. En tout cas je vais me contenter de mon programme qui fonctionne finalement et de la variante de betaplus similaire.

    Dut, encore une fois merci de ta réponse et ton effort. Donc si je comprends bien le code que tu suggères n'est pas du matlab, je devrais ouvrir un bloc-note y copier-coller les 3 lignes que tu proposes, l'enregistrer en .bat et donc cliquer dessus. C'est ce que j'ai essayé de faire mais cela ne semble pas marcher. Je n'ai pas énormément d'expérience avec les .bat mais quand tu me dis de "passer le chemin des dossiers" où il y a des jpg, comment et où faire cela exactement ? En fait, je ne voudrais pas avoir à rentrer moi-même le nom du répertoire. Dans l'idéal je cliquerais sur ce .bat et il me demanderait de choisir manuellement un répertoire puis pour ce répertoire me créerai la liste des .jpg contenu dans le répertoire dans l'ordre et sans extension. Mais bon je doute que ce soit possible. Et sinon j'ai l'impression qu'il y a un lien entre ce bat et Matlab comme tu me l'indiques à la fin mais je ne comprends pas bien comment.

  10. #10
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 53 166
    Points
    53 166
    Par défaut
    Tu peux créer une fonction MATLAB qui fait appel au batch :

    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
    function listjpg(pathname)
     
    if ~ispc
        error('Only for Windows');
    end
     
    if nargin == 0
        pathname = uigetdir();
        if pathname == 0
            return
        end    
    else
        if exist(pathname,'dir')~=7
            error('Directory does not exist')
        end
    end
     
    cmd = sprintf('list "%s"', pathname);
    status = dos(cmd);
     
    if status~=0
        warning('Error in DOS command')
    end
    Il faut juste que listjpg.m et list.bat soient dans le même dossier.
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  11. #11
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 401
    Points : 102
    Points
    102
    Par défaut
    Dut merci de ces précisions et de ce code ! Cependant, je crains de ne pas bien comprendre ce qu'il faille faire. Admettons que sur le bureau, je crée list.bat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    @echo off
     
    if exist list.txt (del list.txt)
     
    for /f %%i in ('dir /b %1\*.txt') do echo %%~ni >> list.txt
    De même je place sur le bureau listejpg.m :

    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
    function listjpg(pathname)
     
    if ~ispc
        error('Only for Windows');
    end
     
    if nargin == 0
        pathname = uigetdir();
        if pathname == 0
            return
        end    
    else
        if exist(pathname,'dir')~=7
            error('Directory does not exist')
        end
    end
     
    cmd = sprintf('list "%s"', pathname);
    status = dos(cmd);
     
    if status~=0
        warning('Error in DOS command')
    end
    Ensuite je ne sais ce que je dois faire : lancer le .m à travers matlab ? Le pathname sera donc le répertoire que je veux traiter contenant les .jpg. Dans matlab, je lance donc listjpg en tapant simplement listjpg dans le workspace et avec le debuggueur jusqu'à la fin. Il se trouve que cela ne fonctionne pas puisque le status est introuvable. Bref je ne suis pas spécialiste mais il semble bien que le .bat doivent être modifié si je ne m'abuse. De toute façon je vois bien que ce batch ne recherche pas les .jpg ; il semble plutôt crée un fichier .txt qui dedans contiendrais le nom des fichiers .txt du répertoire que j'analyse (?!). Mais pour le modifier, j'avoue que j'en serais incapable.

    Quoi qu'il en soit, ne se complique-t-on pas à écrire un batch qui en gros va devoir faire le travail de recherche des .jpg et leur écriture dans un .txt ? Ou alors je ne comprends pas exactement où tu veux en venir ?

    Finalement, même si on parvient à faire marcher tout ceci, sera-t-il possible de compiler le tout pour avoir un programme fonctionnant sans matlab (je n'ai pas matlab chez moi et c'est c'est chez moi que j'ai besoin de ce programme) ? Même avec la variante de betaplus sans batch, la compilation, au regard du lien de Winjerome, m'apparaît très compliquée.

    EDIT:

    Au passage j'ai repris la variante de betaplus et la suggestion de Winjerome en rajoutant le '%s\n' dans le writer ; cette fois dans le photos.txt généré, j'obtiens avec le bloc-note :

    Et avec notepad++:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    1\n
    2\n
    3\n
    4\n
    5\n
    Donc déjà le \n semble être compté comme un caractère mais dans le bloc-note on trouve au moins quelque chose contrairement à ce que j'ai énoncé plus haut mais ce n'est pas pas bon car je voudrais avoir dans les deux :

    Les photos étant 1.jpg,2.jpg ect.

  12. #12
    Invité
    Invité(e)
    Par défaut
    Tu peux très bien te passer de MATLAB : tu ouvres une invite de commandes et tapes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    list.bat "chemin vers ton dossier"
    Sinon as-tu recopié exactement ma ligne ? Si tel est le cas tu ne devrais pas avoir ce \n.

  13. #13
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 53 166
    Points
    53 166
    Par défaut
    L'exemple que j'ai donné liste effectivement les .txt, voici la modification nécessaire au listage des jpeg :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    @echo off
     
    if exist list.txt (del list.txt)
     
    for /f %%i in ('dir /b %1\*.jpg') do echo %%~ni >> list.txt
    Comme Winjerome l'a déjà dit, pas besoin de MATLAB, il suffit de Windows.
    Par contre, il faut ouvrir une console DOS : Bouton Démarrer > Tous les programmes > Accessoires > Invite de commande (ou directement en tapant "cmd" dans la zone de saisie juste au dessu du bouton Démarrer). Il faut ensuite se placer dans le dossier contenant le .bat à l'aide de la commande DOS "cd"
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  14. #14
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 401
    Points : 102
    Points
    102
    Par défaut
    Winjerome

    Effectivement, j'avais mal écrit quelque chose. J'ai donc le code suivant :

    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
    function liste_mp3
     
    clear all;
    close all;
    clc;
     
    Extension = '.JPG';
     
    PathName = uigetdir('Please, select a directory');
    ListInDir = dir(fullfile(PathName,strcat('*',Extension)));
     
    fid = fopen(fullfile(PathName,'photos.txt'), 'w');
    for i=1:1:numel(ListInDir)
        pos = strfind(ListInDir(i).name, Extension);
        writer = fprintf(fid,'%s\n',ListInDir(i).name(1:pos-1));
    end
    fclose(fid);
    Comme cela j'obtiens le même problème qu'avant plus haut : dans le bloc-note j'obtiens des caractères illisibles mais un résultat correct dans notepad++. Si j'utilise maintenant ton autre alternative avec fileparts :

    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
    function liste_mp3
     
    clear all;
    close all;
    clc;
     
    Extension = '.JPG';
     
    PathName = uigetdir('Please, select a directory');
    ListInDir = dir(fullfile(PathName,strcat('*',Extension)));
     
    fid = fopen(fullfile(PathName,'photos.txt'), 'w');
    for i=1:1:numel(ListInDir)
        % = strfind(ListInDir(i).name, Extension);
        %[~, name] = fileparts(ListInDir(i).name)
        %writer = fprintf(fid,'%s\n',ListInDir(i).name(1:pos-1));
        writer = fprintf(fid, '%s\n', ListInDir(i).name(1:end-4) );
    end
    fclose(fid);
    Le même problème a lieu ! C'est embêtant car je voudrais utiliser le bloc note plutôt que notepad++.

    Dut et Winjerome

    Je viens d'essayer l'alternative avec la console. J'ai donc écrit ceci dans l'invite de commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >cd C:\Documents and Settings\...\Bureau
    >list.bat "C:\Documents and Settings\...\Bureau\test"
    Le répertoire de test est celui avec les .jpg, list.bat le bat à utiliser. Tous les deux sont dans le bureau. Alors cette fois cela marche bien effectivement : que ce soit avec le bloc-note ou notepad++ j'obtiens bien la liste dans l'ordre comme voulu. Mais, vous allez dire que je suis pointilleux, mais je n'aime pas trop cette solution car elle m'oblige à écrire moi-même le nom du répertoire à traiter et, de plus, le fichier de résultat list.txt est obtenu sur le Bureau dans cet exemple et non pas dans le répertoire test. Y aurait-il la possibilité que le bat une fois lancé me propose de choisir manuellement le répertoire (comme avec le code matlab) et que l'écriture du .txt se fasse dans le répertoire choisi ?

  15. #15
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 53 166
    Points
    53 166
    Par défaut
    Citation Envoyé par abel413 Voir le message
    Y aurait-il la possibilité que le bat une fois lancé me propose de choisir manuellement le répertoire (comme avec le code matlab)
    Non, il faudra forcément passer par un autre langage de programmation (MATLAB ou autre)

    Ce que je ne comprend pas, c'est que tu n'as pas MATLAB à la maison.
    Donc pourquoi chercher à faire tout ça dans MATLAB ?

    Citation Envoyé par abel413 Voir le message
    que l'écriture du .txt se fasse dans le répertoire choisi ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    @echo off
     
    if exist %1\list.txt (del %1\list.txt)
     
    for /f %%i in ('dir /b %1\*.jpg') do echo %%~ni >> list.txt
     
    move list.txt %1
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  16. #16
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 401
    Points : 102
    Points
    102
    Par défaut
    Dut : et bien je profite de Matlab au cours de mon stage et lorsque je fais des pauses, j'en profite pour réaliser ce programme qui me serait utile chez moi puisque j'ai besoin de créer des listes comme celles-ci avec plein de répertoires. Mon idée était de faire le programme en matlab et de parvenir à la compiler afin de pouvoir l'utiliser ailleurs, ce qui semble fastidieux.

    Chez moi je pourrais certes faire en C ect mais je dois dire que je n'en ai pas motivation : je ne connais plus les bibliothèques à utiliser, ne serait-ce que pour pouvoir faire l'équivalent d'un uigetdir en matlab. Et sans bibliothèques, je pense que cela va être infernal de faire un tel programme, c'est-à-dire écrire toutes les fonctions nécessaires depuis 0. Le Java ne me convient pas non plus puisqu'il ne me génère pas un .exe.

    Enfin bon je te remercie pour ton dernier code ; ce langage "bat" est une énigme pour moi. Je serai bien incapable d'écrire moi-même ce que tu as écrit. En tout cas, à la limite, je peux me contenter de ceci : je rentre manuellement les noms des répertoire et j'obtiens ma liste. Ou sinon : peux-t-on dans l'invite commande dire à list.bat de faire le travail pour tous les répertoire d'un sous-repertoire par exemple ? Par exemple dans le Bureau j'ai le répertoire Liste et dedans pleins de sous-répertoire avec des .jpg : je voudrais donc que le bat examine tous les sous-répertoire de façon automatisée.

  17. #17
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par abel413 Voir le message
    Comme cela j'obtiens le même problème qu'avant plus haut : dans le bloc-note j'obtiens des caractères illisibles mais un résultat correct dans notepad++. Si j'utilise maintenant ton autre alternative avec fileparts :
    Et si tu finissais par recopier EXACTEMENT ma ligne ou suivre mes conseils ?
    Ton pos est sûrement vide ! Tu n'écris que le retour à la ligne.
    Ils ne sont pas invisibles, il n'existent pas.

    Sinon je suis du même avis que Dut, autant utiliser du batch, qui comme tout autre langage s'apprend.

  18. #18
    Membre régulier
    Homme Profil pro
    Thésard
    Inscrit en
    Mars 2013
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Thésard
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2013
    Messages : 54
    Points : 78
    Points
    78
    Par défaut
    Au risque d'être un peu hors sujet et de vous embêter avec le C/C++ ...
    (mais au moins ça fonctionnera sur quasiment toutes les machines et tu n'auras pas besoin d'acheter de licence Matlab pour chez toi)

    En utilisant la fonction "system()" tu peux introduire des commandes du système dans ton code (du style "ls" ou "ll" ou "ls -a" etc enfin suivant le système qui doit effectuer la commande tu peux faire exécuter ce qu'il faut...) et donc récupérer le nom des fichiers dans un répertoire.

    Grace au type (ou la classe...) "string" et à ses méthodes tu peux peux découper découper l'extension de ton fichier.

    Tu peux écrire dans un fichier ascii le nom de tes fichiers listés.

    Tout cela demandera un peu d'astuce mais ne te coûtera rien et sera valable à vie.

    C'est peut-être à méditer et à poster dans la section C/C++.

    A plus

  19. #19
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 53 166
    Points
    53 166
    Par défaut
    Comme abel413 n'est pas motivé pour réécrire son code en C/C++ ou Java, je lui conseille un MATLAB-like comme Scilab ou GNU Octave, voire Python.

    => Quelles sont les alternatives à MATLAB ?
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  20. #20
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 401
    Points : 102
    Points
    102
    Par défaut
    Merci à vous tous pour votre aide. Disons que ça va aller, que ce soit avec Matlab ou avec le .bat, je peux faire d'une manière ou d'une autre ce que je veux au final.

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

Discussions similaires

  1. Rajout de données dans un fichier txt
    Par ben_ghost dans le forum C++/CLI
    Réponses: 4
    Dernier message: 10/10/2006, 11h30
  2. Comment créer une base de donnée dans un fichier .txt
    Par vantoff dans le forum C++Builder
    Réponses: 9
    Dernier message: 19/07/2006, 19h44
  3. Remplacer / Supprimer des données dans un fichier txt
    Par PedroBD dans le forum Langage
    Réponses: 3
    Dernier message: 03/07/2006, 13h33
  4. Sauvegarder les données dans un fichier CSV
    Par beb30 dans le forum MFC
    Réponses: 5
    Dernier message: 08/03/2006, 13h06
  5. Réponses: 5
    Dernier message: 21/10/2005, 11h48

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