Changement de répertoire impossible

Résolu
Mowti Messages postés 7 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 11 février 2010 - 5 févr. 2010 à 23:23
Mowti Messages postés 7 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 11 février 2010 - 7 févr. 2010 à 22:07
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

Mowti Messages postés 7 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 11 février 2010
7 févr. 2010 à 22:07
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);
3
nanonavich Messages postés 54 Date d'inscription mardi 25 mars 2008 Statut Membre Dernière intervention 15 août 2015
7 févr. 2010 à 14:34
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);
0
Mowti Messages postés 7 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 11 février 2010
7 févr. 2010 à 15:27
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.
0
nanonavich Messages postés 54 Date d'inscription mardi 25 mars 2008 Statut Membre Dernière intervention 15 août 2015
7 févr. 2010 à 20:55
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");
0
Rejoignez-nous