Bonjour,

Je vous présente un court programme qui me sert à renommer mes photos.
Alors MATLAB n'est surement pas l'outil le plus adapté pour ce travail, mais ce code est surtout à objectif didactique :
- utilisation de certaines fonctions
- mise en place de commentaires

Si vous-même avez des commentaires ou des questions, n'hésitez pas.

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
function renommagephoto()
%==========================================================================
%renommagephoto - renomme toutes les photos d'un répertoire
%                 avec date+heure+minute et un nom donné par l'utilisateur.
%Entrées : néant (les entrées sont demandées par input utilisateur
%Sorties : néant
%
%Fonctions utilisées :
% uigetdir, inputdlg, isempty, dir, pwd, cd, fileparts, datestr, exist,
% movefile, sprintf
%==========================================================================
 
%Récupération du répertoire où se trouvent les photos à renommer
directory = uigetdir(pwd,...
    'Dans quel répertoire sont les photos à renommer ?');
%Cas d'annulation
if directory==0,return,end
%Récupération du nom racine
answer = inputdlg(['Donner le nom racine',10,...
    'Les fichiers seront nommés : yymmddhhmm_<racine>'],...
    'Renommage Photos');
%Cas d'annulation
if isempty(answer),return,end
racine = answer{1};
%Récupération de tous les élements du répertoire (on ne fait pas de
%ségrégation entre JPG, GIF ...(peut aussi y avoir des vidéos ;)
liste = dir(directory);
%Initialisation de la cellule contenant les éventuels messages d'erreur
msgerreurs = '';
%On boucle sur la structure
for k=1:length(liste)
    %Dans le cas où l'élément n'est pas un sous-répertoire
    if ~liste(k).isdir
        %Recuperation de l'extension
        %On met 3 fois le même argument car seul le 3ème nous intéresse
        [extension,extension,extension] = fileparts(liste(k).name);
        %Le nouveau nom est donné par la date du fichier + le mot-clé donné
        %par l'utilisateur + l'extension
        nouveau_nom = fullfile(directory,...
            [datestr(liste(k).datenum,'yymmddHHMM'),'_',racine,extension]);
        %Si on a pris 2 photos dans la même minute ça peut ne pas passer
        n = 1;
        while exist(nouveau_nom)
            n = n+1;
            nouveau_nom = fullfile(directory,...
                [datestr(liste(k).datenum,'yymmddHHMM'),...
                sprintf('_%d_',n),racine,extension]);
        end
        %Renommage
        [statut,message] = movefile(...
            fullfile(directory,liste(k).name),...
            nouveau_nom);
        %Traitement des cas d'erreur
        if ~statut
            msgerreurs = [msgerreurs,10,liste(k).name,' : ',message];
        end
 
    end
end
%S'il y a des messages d'erreurs on affiche
if ~isempty(msgerreurs)
    disp(msgerreurs);
end
%==========================================================================