[Matlab]Copie plusieurs fichiers
Résolu
Newenda
Messages postés
75
Date d'inscription
Statut
Membre
Dernière intervention
-
Char Snipeur Messages postés 9813 Date d'inscription Statut Contributeur Dernière intervention -
Char Snipeur Messages postés 9813 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Pour copier un fichier :
copyfile('fichier_source','fichier_destination');
Mais voilà je traites beaucoup de fichiers et j'aimerais copier les fichiers qui correspondent à mon critère dans une autre directory:
----------------------------------------------------------
[...]
if Correl > abs(0.89)
disp('Bruit électronique')
compteur_bruit=compteur_bruit+1;
else
disp('signal')
compteur_signal=compteur_signal+1;
copyfile('fichier_source','fichier_destination');
end
[...]
----------------------------------------------------------
En gros, comme vous voyez ci-dessus, j'aimerais copier tous les fichiers dont le signal a un coefficient de corrélation < abs(0.89). Mais je dois donc le faire pour beaucoup de fichiers et j'aimerais que ces fichiers copiés aillent non seulement dans une autre directory mais également gardent le même nom que le fichier source.
Merci
Pour copier un fichier :
copyfile('fichier_source','fichier_destination');
Mais voilà je traites beaucoup de fichiers et j'aimerais copier les fichiers qui correspondent à mon critère dans une autre directory:
----------------------------------------------------------
[...]
if Correl > abs(0.89)
disp('Bruit électronique')
compteur_bruit=compteur_bruit+1;
else
disp('signal')
compteur_signal=compteur_signal+1;
copyfile('fichier_source','fichier_destination');
end
[...]
----------------------------------------------------------
En gros, comme vous voyez ci-dessus, j'aimerais copier tous les fichiers dont le signal a un coefficient de corrélation < abs(0.89). Mais je dois donc le faire pour beaucoup de fichiers et j'aimerais que ces fichiers copiés aillent non seulement dans une autre directory mais également gardent le même nom que le fichier source.
Merci
A voir également:
- [Matlab]Copie plusieurs fichiers
- Copie cachée - Guide
- Renommer plusieurs fichiers en même temps - Guide
- Super copie - Télécharger - Gestion de fichiers
- Copie écran samsung - Guide
- Copie disque dur - Guide
9 réponses
copyfile('fichier_source',['chemin_du_fichier/' 'fichier_source']);
il suffot de faire une concaténation de chaine.
il suffot de faire une concaténation de chaine.
Ok merci, mais je me heurte en faite un peu toujours au même problème : la syntaxe pour lire/appeler/écrire plusieurs fichiers.
En gros mon programme ouvre fichier par fichier.. comment nommer et donc copier les "fichier_source" ? et encore plus GRAVE comment faire des différentes directory...
J'explique le fond de mon problème pour mieux comprendre :
J'ai pleins de fichiers qui sont dans plein de dossier suivant cette arborescence :
ans/mois/jour/heure/AnsMoisJour_heureSecondeDiziemeCentième.txt
(note : AnsMoisJour_heureSecondeDiziemeCentième.txt = nom des fichiers)
(exemple : le fichier 091204_22158598.txt se trouve dans C:\2009\12\04\22 avec pleins d'autres fichiers du 4 décembre 2009 à 22h)
Et j'aimerais copier les bons fichiers (ceux qui respectent une certaine condition) dans une nouvelle arborescence de la même forme ! Pour à la fin avoir une nouvelle copie de tous les dossiers mais avec uniquement les bons fichiers.
Merci
PS : si je demande de l'aide, si je ne le fais pas à la main un par un... c'est parce que là je dois trouver la MEILLEURE solution (ie la plus rapide) car j'ai plus de 2 000 000 de fichiers à traiter...
En gros mon programme ouvre fichier par fichier.. comment nommer et donc copier les "fichier_source" ? et encore plus GRAVE comment faire des différentes directory...
J'explique le fond de mon problème pour mieux comprendre :
J'ai pleins de fichiers qui sont dans plein de dossier suivant cette arborescence :
ans/mois/jour/heure/AnsMoisJour_heureSecondeDiziemeCentième.txt
(note : AnsMoisJour_heureSecondeDiziemeCentième.txt = nom des fichiers)
(exemple : le fichier 091204_22158598.txt se trouve dans C:\2009\12\04\22 avec pleins d'autres fichiers du 4 décembre 2009 à 22h)
Et j'aimerais copier les bons fichiers (ceux qui respectent une certaine condition) dans une nouvelle arborescence de la même forme ! Pour à la fin avoir une nouvelle copie de tous les dossiers mais avec uniquement les bons fichiers.
Merci
PS : si je demande de l'aide, si je ne le fais pas à la main un par un... c'est parce que là je dois trouver la MEILLEURE solution (ie la plus rapide) car j'ai plus de 2 000 000 de fichiers à traiter...
Tu n'arrive toujours pas à utiliser rdir ???
J'ai du mal à comprendre ton problème, où est la difficulté ?
Mais si tu as le nom du fichier source, il est simple d'avoir le nom du fichier destination de copie.
J'ai du mal à comprendre ton problème, où est la difficulté ?
Mais si tu as le nom du fichier source, il est simple d'avoir le nom du fichier destination de copie.
Bah ouais chaud
Voilà ce qu'il faudrait faire :
si le fichier commence par 09 alors il va déjà dans le dossier C:\2009, si il continu en 04 > il va dans le dossier C:\2009\04, si il continu en 01 > il va dans le dossier C:\2009\04\01 et enfin si il continu en 22 il va dans C:\2009\04\01\22
Exemple: Syntaxe du fichiers : 090401_22154589.txt
Bien sur il ne s'agit pas de copier 4 fois le dossier mais bien, une seule fois, à la dernière directory : C:\2009\04\01\22
Et tout ça, en créant bien sur une routine automatique: en interpetant par exemple la directory du fichier source pour créer une nouvelle directory équivalente mais dans un tout autre dossier :
ex : que le bon fichier 090401_22154589.txt qui se trouve dans C:\2009\04\01\22 se retrouve dans C:\fichierOK\2009\04\01\22
J'avoue avoir un peu de mal, effectivement.
Voilà ce qu'il faudrait faire :
si le fichier commence par 09 alors il va déjà dans le dossier C:\2009, si il continu en 04 > il va dans le dossier C:\2009\04, si il continu en 01 > il va dans le dossier C:\2009\04\01 et enfin si il continu en 22 il va dans C:\2009\04\01\22
Exemple: Syntaxe du fichiers : 090401_22154589.txt
Bien sur il ne s'agit pas de copier 4 fois le dossier mais bien, une seule fois, à la dernière directory : C:\2009\04\01\22
Et tout ça, en créant bien sur une routine automatique: en interpetant par exemple la directory du fichier source pour créer une nouvelle directory équivalente mais dans un tout autre dossier :
ex : que le bon fichier 090401_22154589.txt qui se trouve dans C:\2009\04\01\22 se retrouve dans C:\fichierOK\2009\04\01\22
J'avoue avoir un peu de mal, effectivement.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bon j'ai réussi à creer des dossiers suivant le nom des fichiers :
-------------------------------------------------------------------------------------------
%Donne nom du fichier (filename) et récupère : année, mois, jour, heure
[dir, filename] = fileparts(A(p).name)
annee = filename(1:2);
mois = filename(3:4);
jour = filename (5:6);
heure = filename(8:9);
%création de l'arborescences des répertoires utiles
mkdir(annee);
mkdir(annee,mois);
mkdir(fullfile(annee,mois),jour);
mkdir(fullfile(annee,mois,jour),heure);
-------------------------------------------------------------------------------------------
Exemple: soit le fichier: 090805_22545898.txt
donc
filename = 090805_22545898
annee = 09
mois = 08
jour = 05
heure = 22
Le programme me créer aussi une arborescence C:\09\08\05\22
Mais voilà, maintenant je cherche à copier ce fichier dans la directory : C:\09\08\05\22 fraichement créée.
Enfin je cherche une routine pour copier tous les fichiers qui passent dans mon programme dans leurs dossiers d'heure respectifs.
Merci
-------------------------------------------------------------------------------------------
%Donne nom du fichier (filename) et récupère : année, mois, jour, heure
[dir, filename] = fileparts(A(p).name)
annee = filename(1:2);
mois = filename(3:4);
jour = filename (5:6);
heure = filename(8:9);
%création de l'arborescences des répertoires utiles
mkdir(annee);
mkdir(annee,mois);
mkdir(fullfile(annee,mois),jour);
mkdir(fullfile(annee,mois,jour),heure);
-------------------------------------------------------------------------------------------
Exemple: soit le fichier: 090805_22545898.txt
donc
filename = 090805_22545898
annee = 09
mois = 08
jour = 05
heure = 22
Le programme me créer aussi une arborescence C:\09\08\05\22
Mais voilà, maintenant je cherche à copier ce fichier dans la directory : C:\09\08\05\22 fraichement créée.
Enfin je cherche une routine pour copier tous les fichiers qui passent dans mon programme dans leurs dossiers d'heure respectifs.
Merci
Ba ! Il suffit de concaténé les strings !
copyfile(filename,['c:\\',annee,'\\',mois,'\\',jour,'\\',filename]);
je met '\\' à la place de '\' car j'utilise la notation C qui est peut être respecté en MATLAB.
copyfile(filename,['c:\\',annee,'\\',mois,'\\',jour,'\\',filename]);
je met '\\' à la place de '\' car j'utilise la notation C qui est peut être respecté en MATLAB.
Oui c'est ce que tu m'avais expliquer plus en haut. Cependant il reconnait pas le filename comme le fichier existant mais juste comme une chaine de caractère... Je dois (je pense) vraiment définir "source" comme mon point .txt mais je vois pas comment implémenter cette définition dans copy.
Merci !
Merci !
ok trouvé !
Il faut juste recomposer le nom du fichier :
full_filename = fullfile(dir, [filename, ext]);
merci encore à vous.
Il faut juste recomposer le nom du fichier :
full_filename = fullfile(dir, [filename, ext]);
merci encore à vous.
C'est exactement pareil !
https://www.mathworks.com/help/matlab/index.html;jsessionid=ab5c2eb54d440ac863c5c4dd67f2?/access/helpdesk/help/techdoc/ref/fullfile.html=&http://www.google.com/search%3fq=fullfile+matlab%2524&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:fr:official&client=firefox-a
j'ai juste oublié l'extension dans mon exemple, tu aurais pu corrigé de toi même.
https://www.mathworks.com/help/matlab/index.html;jsessionid=ab5c2eb54d440ac863c5c4dd67f2?/access/helpdesk/help/techdoc/ref/fullfile.html=&http://www.google.com/search%3fq=fullfile+matlab%2524&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:fr:official&client=firefox-a
j'ai juste oublié l'extension dans mon exemple, tu aurais pu corrigé de toi même.