Changement de répertoire impossible [Résolu]

Signaler
Messages postés
7
Date d'inscription
mercredi 3 février 2010
Statut
Membre
Dernière intervention
11 février 2010
-
Mowti
Messages postés
7
Date d'inscription
mercredi 3 février 2010
Statut
Membre
Dernière intervention
11 février 2010
-
Bonjour,

J'ai un soucis dans un programme en C. Je veux exécuter des commandes dans le répertoire D: , mais je n'arrive pas à y accéder avec _chdir ni avec SetCurrentDirectory. Et si j'utilise system("D:"), il change de répertoire dans l'invit de commande ouvert, mais je ne peux pas utiliser GetDiskFreeSpace par la suite car il l'execute sur C: .

Quelqu'un a une solution à proposer?

Merci d'avance.

4 réponses

Messages postés
7
Date d'inscription
mercredi 3 février 2010
Statut
Membre
Dernière intervention
11 février 2010

Enfaite, j'ai trouvé une solution.... simple. La fonction GetDiskFreeSpace prend comme input le lecteur sur lequel on veut l'exécuter, il suffisait donc de mettre le bon chemin d'accès. ( ça m'apprendra à utiliser des exemples sans regarder les syntaxes des fonctions utilisées )

BOOL d = GetDiskFreeSpace("D:\", NULL, NULL, &FreeCluster, &TotalCluster);
Messages postés
54
Date d'inscription
mardi 25 mars 2008
Statut
Membre
Dernière intervention
15 août 2015

char def[260];

strcat_s(def,"D:\");
SetCurrentDirectory( def);

oubli pas le double \\ qui va etre convertit auto en \ un

ou si tu connais l emplacement exact

ssprintf(def,"d:\\system32\\mon.exe");
WinExec(def,0);

ou
WinExec(d:\\system32\\mon.exe",0);
Messages postés
7
Date d'inscription
mercredi 3 février 2010
Statut
Membre
Dernière intervention
11 février 2010

J'ai essayé ta première proposition mais il me dis "undefined reference to '_strcat_s'". Si j'utilise "strcat" le programme tourne, mais le problème est le même qu'au début.
Les 2 autres propositions que tu as faites ne sont pas utilisable car je ne lance pas de programme dans le répertoire, mais je récupère des informations ( capacité total et espace libre restant ).

En passant directement par l'invit de commande de Windows, lorsque je tape "cd D:\" ou "cd D:", rien ne se passe, il retourne juste à la ligne sans changer le lecteur. Pour qu'il change le lecteur, il faut juste taper "D:". Je ne sais donc pas comment faire pour changer le répertoire dans le programme en C, car si j'utilise "system("D:")", il ne change pas le répertoire où sont exécutés les autres commandes. J'espère avoir été compréhensible. S'il faut plus de précisions, je peux répondre aux questions.
Messages postés
54
Date d'inscription
mardi 25 mars 2008
Statut
Membre
Dernière intervention
15 août 2015

moi non plus rien arrive si je je fais
cd D:\\
"cd" ses pour changer dossier
si tu fait


c) d: <enter>
c) cd\ <enter>
tu devrais te retrouver sur d:\
mais ce n ai pas le dossier par default
si tu execute un autre program tu va devoir tout recommencer!

en dos dans autoexec.bat
PATH d:\

mais en windows ses un autre affaire
tu peut essayer se lien

http://www.computerhope.com/issues/ch000549.htm

sinon en programmation

tu lui dit le chemin
ssprintf(def,"d:\\a.txt");
fp=fopen(def,"r");