Copier un dossier
Résolu
Lye
-
Lye -
Lye -
Bonjour, débutant en C, j'essaie de copier un dossier (que j'appelle test) dans un autre dossier (test2).
Le code :
fonction.c :
main.c :
La variable rep contient le chemin absolu du dossier que je veux copier (test).
Lors de l’exécution, aucun dossier n'est créé, je travaille via l'API Windows.
Le code :
fonction.c :
#include <windows.h>
#include <shellapi.h>
int CreationDossier(char* rep)
{
SHFILEOPSTRUCT shfo;
ZeroMemory(&shfo, sizeof(SHFILEOPSTRUCT));
shfo.hwnd = NULL;
shfo.wFunc = FO_COPY;
shfo.pFrom = "rep\\*";
shfo.pTo = "D:\\Dossier\\test2\\test\\*\0";
shfo.fFlags = FOF_NOCONFIRMMKDIR|FOF_NOCONFIRMATION;
SHFileOperation(&shfo);
return 0;
}
main.c :
if ..... CreationDossier(rep); ....
La variable rep contient le chemin absolu du dossier que je veux copier (test).
Lors de l’exécution, aucun dossier n'est créé, je travaille via l'API Windows.
1 réponse
-
Salut Lye,
Je n'ai jamais utilisé cette fonction. Selon la doc, elle renvoie un entier qui est un code d'erreur.
https://docs.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shfileoperationa
Peux tu récupérer le retour de la fonction et voir quel est le code d'erreur renvoyé ?
Ligne 11 du écrisshfo.pFrom = "rep\\*";
, cela ne va pas mettre magiquement la chaîne pointée par lechar* rep
dans ce champ de la struct.
Cela ne serait pas plutôtshfo.pFrom = rep
que tu veux faire ?
La doc Microsoft indique que cette fonction (qui a l'air toujours supportée) a été "remplacée", à partir de Windows Vista, par IFileOperation (que je ne connais pas plus que cela personnellement). C'est peut-être aussi une piste à creuser pour toi :-)
Dal-
Lorsque je mets rep comme tu l'as dit, cela me mets lors de l’exécution "Le nom de fichier spécifié n'est pas valide ou est trop long." Avec le nom de dossier concerné, ainsi que sa date de création, qui correspond bien à mon dossier à copier.
Je vais regarder pour IFileOperation merci pour l'info
EDIT : j'ai modifié le chemin : D:\\test2\\test\0, cela a fonctionné
Merci pour ton aide !
-