[Borland C++] Lancer une commande DOS

Lancer une commande DOS [Borland C++] - Programmation

Marsh Posté le 30-08-2001 à 12:34:29    

Bon je sais je suis pas aidé mais bon j'ai une question stupide à vous poser : comment faire pour lancer une commande dos du style:
dir d:\ >> d:\liste.txt
Parce que les fonctions ShellExecute sont bien gentilles mais elle ne font pas ça...
 
merci


---------------
Chaos is found in greatest abundance wherever order is being sought. It always defeats order, because it is better organized.
Reply

Marsh Posté le 30-08-2001 à 12:34:29   

Reply

Marsh Posté le 30-08-2001 à 13:12:13    

bhen vu que comme tu le dis c'est une commande DOS et non pas un programme, tu dois lancer command.com (sous win9x) ou cmd.exe (sous winNT/2K)
donc programme à lancer = "command.com"
paramètres (je suis pas sûr qu'on peut les mettre dans la même chaine que le programme à lancer, sinon c'est le paramètre suivant du shellexecute) = "/c dir d:\ >> d:\liste.txt"
donc un truc du genre:
ShellExecute(0,"","command.com","/c dir d:\\ >> d:\\liste.txt", etc...);
si tu veux que la fenêtre DOS reste ouverte après exécution, c'est /k au lieu de /c.
Pour le choix entre command.com et cmd.exe, je ne sais pas trop command tu peux t'y prendre, mais il doit y avoir moyen de faire ça facilement.
Je pense que command.com peut marcher à tous les coups, mais je n'ai pas de NT4 ou de XP sous la main pour tester...

 

[edtdd]--Message édité par antp--[/edtdd]


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 30-08-2001 à 13:36:50    

?!?
 
system("dir d:\>> d:\liste.txt" );
fonctionne tres tres bien .. :D
 
pas besoin de lancer command.com ou cmd.exe

Reply

Marsh Posté le 30-08-2001 à 13:39:00    

system ça fonctionne en NT et 2k ?
ce ne serait pas une de ces fonctions qu'il ne vaut mieux ne plus utiliser, un peu comme WinExec, pcq ça date de l'API Win3.1 ?


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 30-08-2001 à 13:45:38    

c est du C pure .. oui ca fonctionne sous NT mais evidement .. la chose la plus recommandée c est CreateProcess... le reste c'est plus ou moins du caca

Reply

Marsh Posté le 30-08-2001 à 13:53:07    

merci a tous les 2
 
à mon avis command.com est assez aleatoire sous NT parce que je l'avais tenter sans grand resultats (enfin ça c'est peut etre de ma faute aussi remarquez...)
 
mais encore merci


---------------
Chaos is found in greatest abundance wherever order is being sought. It always defeats order, because it is better organized.
Reply

Marsh Posté le 30-08-2001 à 15:23:14    

la viper a écrit a écrit :

c est du C pure .. oui ca fonctionne sous NT mais evidement .. la chose la plus recommandée c est CreateProcess... le reste c'est plus ou moins du caca  




 
ha ok, c'est du C, mais en C++ Win32 est-ce que ça ne pose pas de problème ? Je n'ai jamais utilisé cette fonction en fait.
Et vu que moi en general je fais du Delphi je dois de toute façon utlise ShellExecute qui, je pense, est aussi bien que CreateProcess. La différence c'est que CreateProcess tu t'occupes du process créé (savoir quand il a fini, etc...), tandis que ShellExecute tu lances un truc dont tu ne t'occupes plus après (et je le trouve bcp plus simple à utiliser, y a qu'une ligne avec peu de paramètres).
Dans les fichiers d'aides de Borland il disent de ne pas utiliser WinExec, mais rien à propos de CreateProcess plutôt que ShellExecute.

 

[edtdd]--Message édité par antp--[/edtdd]


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 31-08-2001 à 02:34:45    

b

Reply

Marsh Posté le 31-08-2001 à 02:36:05    

bien je me suis jamais servi de ShellExecute mais ca doit etre l'equivalent de system sous C ..
 
maintenant au niveau perf il ne doit pas y avoir bcp de difference.
 
l'avantage de system, c que tu peux executer des commandes dos sans te soucier de savoir si c command.com ou cmd.exe

Reply

Marsh Posté le 31-08-2001 à 02:45:16    

au pire, tu créés un .bat et tu le balances à ShellExecute() ...

Reply

Sujets relatifs:

Leave a Replay

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