Appel de commande Windows( system !) en C++

Appel de commande Windows( system !) en C++ - Divers - Programmation

Marsh Posté le 23-07-2007 à 12:55:32    

Bonjour,
 
J'ai un programme qui peut être lancé en executant un fichier prog.bat placé dans un repertoire spécifique C:\\path.
Je voudrais pouvoir créer un éxécutable qui puisse être lancé dans n'importe quel répertoire et pour executer la commande prog.bat.
 
En fait, j'ai tapé, en C++ la commande system("cd C:\\path" ); puis system("prog.bat" );  
 
Cela ne semble pas fonctionner car si mon executable accepte de changer de repertoire, il ne trouve pas le fichier prog.bat qui pourtant existe bien.
Seule la commande system("C:\\path\\prog.bat" ); semble fonctionner.
 
Malgré cela, le programme poursuit en cherchant des fichiers de donnés stockés dans ce même repertoire C:\\path qu'il ne trouve pas, sans doute parceque l'executable s'execute toujours dans le repertoire initial.
 
Pourriez-vous m'indiquer comment résoudre ces problèmes ?
Comment peut-on changer de repertoire effectivement pour que les commandes system("cd C:\\path" ); puis system("prog.bat" ); fonctionne correctement ?
 
D'autre part, peut-on créer une string mypath, y mettre un chemin, et l'utiliser comme variable ? system("cd mypath" ); ne semble pas accepter !

Reply

Marsh Posté le 23-07-2007 à 12:55:32   

Reply

Marsh Posté le 23-07-2007 à 13:12:51    

system("cd c:\\path" ); ne changera pas ton working directory ... Il faut que tu le modifies avec d'autres fonctions

Reply

Marsh Posté le 23-07-2007 à 13:14:06    

lesquelles ?
 
Merci d'avance,

Reply

Marsh Posté le 23-07-2007 à 13:22:31    

tu devrais trouver ce que tu veux ici :
http://msdn2.microsoft.com/En-US/library/aa446854.aspx

Reply

Marsh Posté le 23-07-2007 à 13:26:32    

j'ai peut-être été un peu précipité, j'ai pas trop le temps de faire la recherche à ta place, mais bon, tu peux toujours tenter de regarder du côté de setWorkingDirectory ou setcwd ou des noms de ce genre [:petrus75]

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed