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

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    août 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : août 2006
    Messages : 2
    Points : 2
    Points
    2

    Par défaut boucle pour renommer des fichiers dans un repertoire

    bonjour à tous , je débute en c et j'aurais besoin d'un petit coup de main !

    j'aimerais parcourir un répertoire et renommer tous les fichiers présents (jpg) avec un format comme suit : 001.jpg 002.jpg 003.jpg et ainsi de suite
    donc sur trois chiffres.
    pour le moment j'arrive bien a parcourir le répertoire et a afficher les fichiers qu'il contient.

    j'ai aussi mis un compteur pour pouvoir renommer chaque fichier comme suit: (du moins c'est ce que je voudrais faire)

    de 1 à 9 : 00 + compteur.jpg
    de 10 à 99 : 0 + compteur.jpg
    plus de 99 : compteur (ça ne dépassera pas les centaines).

    voila ou j'en suis pour le moment, ce que j'ai fait fonctionne MAIS !
    j'ai un problème dans la boucle de lecture du répertoire
    ou a la place des printf je voudrais faire un rename comme décrit ci dessus.
    (j'ai mis des printf avec compteur et nom du fichier parcouru pour voir si ça marche)

    Merci de votre aide


    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
     
     
    #include <sys/types.h>
    #include <dirent.h>
    #include <string.h>
    #include <stdio.h>
    #include "fonctions.h"
     
     
    void renamefic()
    {
      char chemin[100];
      int i = 0;
      printf("\n [ RENOMMER DES FICHIERS ]\n\n");
      printf("  Entrez le chemin : ");
      scanf("%s", chemin);
     
      struct dirent *lecture;
      DIR *rep;
      rep = opendir(chemin);
      while ((lecture = readdir(rep)))
       {
        if (strcmp(lecture->d_name, ".") != 0 && strcmp(lecture->d_name, "..") != 0)
        {
         i++;
          if (i<10)
           {
             printf("00%d - ",i);
             printf("%s\n", lecture->d_name);
           }
           else if (i>9 && i<100)
           {
            printf("0%d - ",i);
            printf("%s\n", lecture->d_name);
           }
           else if (i>100)
           {
            printf("%d - ",i);
            printf("%s\n", lecture->d_name);
           }
         }
     
       }
     
      closedir(rep);
      printf("\n");
      system("pause");
      main();
      }

  2. #2
    Membre éclairé Avatar de edgarjacobs
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mai 2011
    Messages
    378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : mai 2011
    Messages : 378
    Points : 838
    Points
    838

    Par défaut

    Hello,

    sprintf() va t'aider:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    char new_name[....];
    sprintf(new_name,"%03d.jpg",i);
    if(rename(old_name,new_name)!=0) {
        // traiter l'erreur, p.ex.
        printf("Impossible de renommer %s en %s\n",old_name,new_name);
    }

  3. #3
    Expert éminent
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    juillet 2013
    Messages
    2 696
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : juillet 2013
    Messages : 2 696
    Points : 6 311
    Points
    6 311

    Par défaut

    Pour compléter la réponse de @edgarjacobs , voici la documentation du format.

    Entre le '%' et la lettre du format, on peut mettre des drapeaux, renseigner le minimum de caractères, préciser le nombre de chiffres après la virgule, ...

Discussions similaires

  1. Script shell pour renommer des fichiers dans des sous répértoires
    Par ibuto dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 25/12/2013, 21h52
  2. Réponses: 3
    Dernier message: 21/07/2006, 14h22
  3. Réponses: 6
    Dernier message: 26/12/2005, 01h48
  4. Lister des fichiers dans un repertoire
    Par K.othmane dans le forum Langage
    Réponses: 1
    Dernier message: 23/12/2005, 12h14
  5. [] [Réseau] Renommer des fichiers dans un site FTP
    Par JerBi dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 22/08/2003, 01h35

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