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

C++ Discussion :

Renommage de fichiers


Sujet :

C++

  1. #1
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    281
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 281
    Points : 47
    Points
    47
    Par défaut Renommage de fichiers
    Bonjour à tous,

    Je souhaite faire un programme console simple:

    Quand j'éxécute mon programme, les fichiers *.png dans le dossier d'éxécution devront être listés, puis pour chaque fichier je souhaite appeler avec un ShellExecute un programme console qui prendra deux paramètres, le premier étant le fichier png de mon itération et le second sera le meme nom de fichier moins son extension ( donc moins ces 4 derniers caractères)

    Le shellExecute est pour infos (en console) : CFC.exe -pc tototata.png tototata


    Je pourrais certes faire cette chose très rapidement en .net. N'ayant pas utilisé c++ depuis quelques temps je voudrais me dérouiller,et....je dérouille.
    Cela fait plus de 4 heures que je suis sur le code, et je deviens fou :-)

    je m'en remet à vous pour un peu d'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
     
    #include "stdafx.h"
    #include <stdio.h>
    #include <iostream>
    #include <windows.h>
    #include <Shlwapi.h>
    #include <string.h>
     
     
     
    int main(void)
    {
        WIN32_FIND_DATA File;
        HANDLE hSearch;
        typedef wchar_t WCHAR;
     
        hSearch = FindFirstFile(_T("*.png"), &File);
     
        if (hSearch != INVALID_HANDLE_VALUE)
        {
            do {
    			_tprintf (TEXT("The first file found is %s\n"), File.cFileName);
    			// ICI
     
            } while (FindNextFile(hSearch, &File));
     
            FindClose(hSearch);
        }
     
    	return 0;
    }
    La oui j'ai mise le commentaire "// ICI", je dois :

    Créer une variable "param" qui serait "-pc" + File.cFileName + " " + File.cFileName - 4 derniers caractères.

    Je ne sais déja pas quelles fonctions utiliser, d'autant plus que la structure File est de type WCHAR.

    Quelqu'un pourrait m'aider ? On m'a parlé de strncpy, mais comment l'utiliser avec WCHAR ? Y a t-il plus simple ?

    Une fois ma variable PARAM crée, j'appellerai mon ShellExecute().

    Je vous remercie à tous pour votre aide,

    Bien cordialement,

    Nixeus

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 50
    Points : 60
    Points
    60
    Par défaut
    Bonjour,

    Je ne suis pas très familier aux fonctions et types made by MS, voila pourquoi je passerais par des wstring.

    Récupère tout d'abord le nom de ton fichier dans une wstring de la manière suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    //ICI
    wstring cFileName(File.cFileName);
    Ensuite, connaissant l’extension de tes images, utilise la méthode "wstring::find" pour trouver l'emplacement de ".png" dans la wstring, puis utilise "wstring::substr" pour extraire le nom sans l'extension.

  3. #3
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 859
    Points : 218 579
    Points
    218 579
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    D'ailleurs, avec la WinAPI, strncpy a des variantes pour les types spécifiques de Windows ->
    http://msdn.microsoft.com/en-us/libr...=vs.71%29.aspx
    notamment wcsncpy.

    Mon principe était donc, de copier juste les n-4 caractères dans la nouvelle chaine de caractères.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  4. #4
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Bonjour,
    Boost.Filesystem est très pratique pour ce genre de chose :
    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
    #include <iostream>
    #include <algorithm>
    #include <boost/filesystem.hpp>
     
    namespace bfs = boost::filesystem;
     
    int main(int argc, char* argv[])
    {
       std::vector<bfs::path> v_subdirs;
       bfs::path const path = ".";
     
       std::for_each(bfs::directory_iterator(path),bfs::directory_iterator(),
          [](bfs::path const &p_)
          {
             if(bfs::is_regular_file(p_))
             {
                std::cout<<"directory"<<p_.parent_path()<<"\n";
                std::cout<<"file without extension : "<<p_.stem()<<"\n";
                std::cout<<"extension : "<<p_.extension()<<"\n";
             }
          }
       );
     
      return 0;
    }

  5. #5
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    281
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 281
    Points : 47
    Points
    47
    Par défaut
    Bonjour et merci à tous pour vos participations,

    Ma connaissance en c++ est presque limitée aux MFC, donc en dehors de cela, je n'ai que les bases, pour ainsi dire, je ne connais rien à la STL ! :\

    Je vais regarder votre code merci à tous !
    En tout cas, c'est sacrément inbuvable certaines fois le c++

    Merci encore

Discussions similaires

  1. Script de renommage auto fichier d'un repertoire
    Par faventin dans le forum Windows
    Réponses: 1
    Dernier message: 09/11/2006, 21h27
  2. parcourir des tableaux pour faire des copies/renommages de fichiers
    Par Paloma dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 31/10/2006, 09h09
  3. [C#] Renommage de fichiers impossible
    Par xtream dans le forum Windows Forms
    Réponses: 4
    Dernier message: 19/08/2006, 12h02
  4. routine de renommage des fichiers
    Par jeremy.blanche dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 11/08/2006, 11h24
  5. [batch] renommage de fichiers dans des rep enfants
    Par khayyam90 dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 25/08/2005, 09h03

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