Renommer une serie de fichier

paulselvan Messages postés 208 Date d'inscription   Statut Membre Dernière intervention   -  
Idéophage Messages postés 54 Statut Membre -
Bonjour,

J'ai une cinquantaine de repertoires contenant chacun des fichiers jpg nommés quelconquement
Je voudrais nommer ces fichiers jpg avec le nom du repertoire les contenant suivi d'un indice ,exemple :
____________________________
avant :
photos\anniversaire\a.jpg
photos\anniversaire\b.jpg
...
photos\anniversaire\z.jpg
___________________________
après :
photos\anniversaire\anniversaire 01.jpg
photos\anniversaire\anniversaire 02.jpg
...

photos\anniversaire\anniversaire 26.jpg
_________________________
J'ai donc une tâche repététif à faire
Pouvez m'aider en me donnant un programme tout fait soit en batch,vb6,java...
Merci d'avance
Cordialement

4 réponses

  1. bg62 Messages postés 23433 Date d'inscription   Statut Modérateur Dernière intervention   2 435
     
    si ce n'est que pour des "images" il y a " x " logs (graticiels) qui permettent de le faire ... et ensuite tu peux repartir sur une bonne base ...
    suffit de fouiner un peu dans les gestionnaires d'images sur GG ... ;)
    (le 'dossier' ça tu verras après car aucune importance... )
    0
  2. KX Messages postés 19031 Statut Modérateur 3 020
     
    Voici un exemple en Java :

    import java.io.File;
    
    public class Rename
    {
        public static void main(String[] args)
        {
            for (int i=1; i<args.length; i++)
            {
                File rep = new File(args[i]);        
                int n=1;
                String name;
                File[] list = rep.listFiles();
                if (list!=null)
                    for (File fic : list)
                        if (fic.getName().endsWith(args[0]))
                            do name= String.format("%s %03d%s", rep.getName(), n++, args[0]);
                            while (!fic.renameTo(new File(rep,name)));
            }
        }
    }

    Exemple d'utilisation :
    java Rename ".jpg" "photos\anniversaire\" "photos\vacances"
    0
  3. Idéophage Messages postés 54 Statut Membre 5
     
    Bonjour,

    J'ai essayé de faire ça en Perl (je débute, c'était pour m'exercer), voilà ce que j'ai fait :
    my $ext = shift @ARGV; 
    
    sub renommer { 
     my ($compt, $path) = (0, @_); 
     my $pref = $path; 
     $pref =~ s=.*/(.*?)$=$1=o; 
      
     foreach (glob (quotemeta($path).'/*') ) { 
      if (-d $_) 
       { &renommer ($_); } 
      elsif ($_ =~ m=\.$ext$=) { 
       $_ =~ s=.*/(.*?)$=$1=o; 
       rename "$path/$_", "$path/$pref $compt.$ext"; 
       $compt++; 
      } 
     } 
    } 
    
    renommer $_ foreach (@ARGV); 
    


    Ça fonctionne chez moi, mais je ne sais pas s'il vous est possible d'interpréter du Perl sur Windows facilement. Il faut aussi remplacer le slashs par un anti-slash (ou l'inverse) dans le chemin (ligne "rename ...").

    Je me suis inspiré du Java de KX. On fournit en arguments l'extension des fichiers que l'on veut renommer (idée d'amélioration : demander à l'utilisateur sa propre regex, pas trouvé comme faire), et le script explore le dossier et ses sous-dossiers pour appliquer le rename.
    0
    1. jisisv Messages postés 3678 Statut Modérateur 936
       
      La distribution PERL fournie sous Debian comporte en principe l'utilitaire rename en prime-cadeau. Il y a de grosses chance que cet utilitaire soit disponible dans un bonne distribution PERL pour Win$
      En suivant les liens symboliques .
      johand@osiris: ~ $ dpkg -S /usr/bin/prename
      perl: /usr/bin/prename
      0
    2. Idéophage Messages postés 54 Statut Membre 5
       
      Une autre solution consiste à copier le fichier avec l'autre nom et supprimer l'ancien.

      PS : je ne sais pas trop s'il y a eu un quiproquo, je parlais de rename pour localiser la ligne où il faut inverser le sens du slash avec Windows.
      0
  4. paulselvan Messages postés 208 Date d'inscription   Statut Membre Dernière intervention   17
     
    Un modèle en Batch files ?
    Mercid'avance
    0
    1. Idéophage Messages postés 54 Statut Membre 5
       
      Hem... J'ai regardé le Batch, ça a pas l'air très intuitif...
      0