Copier un fichier dans le répertoire précédent

Résolu
cs_papi2 Messages postés 44 Date d'inscription vendredi 22 avril 2005 Statut Membre Dernière intervention 6 mars 2009 - 3 oct. 2007 à 23:34
cs_papi2 Messages postés 44 Date d'inscription vendredi 22 avril 2005 Statut Membre Dernière intervention 6 mars 2009 - 4 oct. 2007 à 15:39
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

SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
4 oct. 2007 à 00:13
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++ (@++)<!--
3
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
4 oct. 2007 à 00:17
Oups petite erreur à la déclaration de pPos.
Ce n'est pas un char mais un int:
int pPos = (pPath-lpPath);

C++ (@++)<!--
0
cs_papi2 Messages postés 44 Date d'inscription vendredi 22 avril 2005 Statut Membre Dernière intervention 6 mars 2009
4 oct. 2007 à 15:39
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
0
Rejoignez-nous