Copier un fichier dans le répertoire précédent [Résolu]

Signaler
Messages postés
44
Date d'inscription
vendredi 22 avril 2005
Statut
Membre
Dernière intervention
6 mars 2009
-
Messages postés
44
Date d'inscription
vendredi 22 avril 2005
Statut
Membre
Dernière intervention
6 mars 2009
-
Bonjour,

Je voudrais copier un "exe" à l'extérieur de son répertoire...mais je n'ai trouvé aucune solution.
Est-ce-que quelqu'un pourraît m'aider ?
J'utilise "Dev-C++ 4.9.9.2".

Voici ma recherche:

char Buff[MAX_PATH];
GetModuleFileName(NULL, Buff, MAX_PATH);
MessageBox(0, Buff, "Chemin et nom de ''mon_fichier.exe'' qui est en cours.", 0);


char* d = strrchr(Buff, '\\');
*d = 0;
MessageBox(0, Buff, "Chemin qui est en cours moins le nom de ''mon_fichier.exe'',0);


char* f = strrchr(Buff, '\\');
*f = 0;
MessageBox(0, Buff, "Chemin qui est en cours moins le répertoire de ''mon_fichier.exe'' ", 0);

CopyFile("autre_fichier.exe", Buff, 1);//je voudrais copier ''autre_fichier'' dans ''Buff'' qui est le répertoire en dessus de celui de l'exécutable en cours. Et là ça ne marche pas...

Si vous pouviez m'aider...
Merci.

3 réponses

Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
Hein ????
J'ai pas compris grand chose.

D'après le titre et quelques morceaux de ton post, tu souhaite copier le exe courant dans le répertoire précédent.

Donc c'est simple:
On récupère le chemin de l'exe.
On remonte vers le dernier \. On sauvegarde la position
On continue de remonter vers l'avant dernier \.
On vérifie qu'on à pas dépassé le buffer.
On copie dans un autre buffer tout le chemin jusqu'à l'avant dernier \
On concatène le nom du fichier grâce à la sauvegarde.
On copie.

char lpPath[300], *pPath = lpPath+GetModuleFileName(0, lpPath, 300);
char *pFileName;
while(*pPath-- !'\\'); pFileName pPath+1;
while(*pPath != '\\') pPath--;

if(pPath >= lpPath) {
    char lpCopyPath[300], pPos = (pPath-lpPath);

    strncpy(lpCopyPath, lpPath, pPos);
    strcpy(lpCopyPath+pPos, pFileName);

    CopyFile(lpPath, lpCopyPath, 0);
}

C++ (@++)<!--
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
Oups petite erreur à la déclaration de pPos.
Ce n'est pas un char mais un int:
int pPos = (pPath-lpPath);

C++ (@++)<!--
Messages postés
44
Date d'inscription
vendredi 22 avril 2005
Statut
Membre
Dernière intervention
6 mars 2009

Bonjour SAKingdom,

Merci beaucoup.
Ca fonctionne très bien.
En fait je voulais copier un fichier avec celui que j'avais ouvert dans le répertoire précédent.
Grace à toi j'y suis arrivé...!
Merci encore.

Papi2