Commande DOS "universelle" (98, XP, Vista)

Résolu
cs_JackNUMBER Messages postés 233 Date d'inscription jeudi 30 septembre 2004 Statut Membre Dernière intervention 26 juin 2011 - 30 janv. 2008 à 09:08
cs_JackNUMBER Messages postés 233 Date d'inscription jeudi 30 septembre 2004 Statut Membre Dernière intervention 26 juin 2011 - 4 févr. 2008 à 15:28
bonjour !
j'aimerai savoir si il y a une possibilité d'éxécuter une commande DOS qui marche sur tous les Windows (98, XP, Vista) car mon problème est que l'invite de commande est passée de command à cmd (de 98 à XP) et donc mon petit programme ne marchera pas sous tous les windows et tant qu'à faire autant n'avoir qu'une version.

merci.








-----------------------------------------



Jack NUMBER

12 réponses

cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
4 févr. 2008 à 10:37
Bah simplement quelque chose comme ça :
var
nSize: DWORD;
val: String;
begin
nSize:= 0;
nSize:= GetEnvironmentVariable('ComSpec', nil, nSize);
SetLength(val, nSize - 1);
GetEnvironmentVariable('ComSpec', PChar(val), nSize);
ShellExecute(handle,'open',val,'/c DEL C:\aa.txt','',SW_Hide);
end;


Le quatrième argument, c'est les paramètres passés à l'appli, donc tu demandais le lancement de deux invites.
3
Utilisateur anonyme
30 janv. 2008 à 09:20
Salut,

1) Le Dos n'existe plus sous NT

2) l'invite de commande est passée de command à cmd : Oui et ??????

>DEMARRER
>>EXECUTER
>TAPER "COMMAND"
>OK
Le Shell se lance

>DEMARRER

>>EXECUTER

>TAPER "CMD"

>OK

Le Shell se lance

Avant de poser ta question tu aurais pu vérifier quand meme
0
cs_JackNUMBER Messages postés 233 Date d'inscription jeudi 30 septembre 2004 Statut Membre Dernière intervention 26 juin 2011 5
30 janv. 2008 à 18:56
salut !
ha mais ça je le sais
c'est juste que dans un code comme celui là:
ShellExecute(handle,'open','command.com','command.com/c DEL C:\*.bmp','',SW_Hide);

je suis obligé de faire une version comme celle-ci pour XP:
ShellExecute(handle,'open','cmd.exe','cmd.exe/c DEL C:\*.bmp','',SW_Hide);

donc je suis obligé de doubler le code, c'est pour cela je cherche un moyen pour palier à ce problème, ne commande 'universelle'.
Sinon pourquoi pas un "détécteur" de version de Windows qui mettra 'cmd.exe' ou 'command.com' dans une variable et cette variable serait appelée dans la commande... c'est tiré par les cheveux...

et je sais pas mettre une valeur dans une variable :/









-----------------------------------------



Jack NUMBER
0
cs_JackNUMBER Messages postés 233 Date d'inscription jeudi 30 septembre 2004 Statut Membre Dernière intervention 26 juin 2011 5
30 janv. 2008 à 20:03
c'était un script comme ça, un script d'exemple que j'ai récupéré.
bref.
merci pour vos explications !!







-----------------------------------------



Jack NUMBER
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
31 janv. 2008 à 09:16
Tu dis une grosse betise : Testé sous XP Sp2

procedure TForm1.Button1Click(Sender: TObject);
begin
ShellExecute(handle,'open','command.com','command.com/c DEL C:\aa.txt','',SW_Hide);
end;

Fichier "aa.txt" parfaitement supprimé. Lis les réponses que l'on te donne et fais un minimum de tests avant de poser une question : tu avais tou il y avait qu'a tester
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
31 janv. 2008 à 10:00
Salut,


Jette un coup d'oeil du côté de la variable d'environnement comspec.


Je crois qu'elle contient toujours l'invite privilégiée de l'OS, que ce soit cmd.exe ou command.com.
0
cs_JackNUMBER Messages postés 233 Date d'inscription jeudi 30 septembre 2004 Statut Membre Dernière intervention 26 juin 2011 5
31 janv. 2008 à 15:27
hello !
merci Francky23012301 pour ta réponse chaleureuse !
je n'ai effectivement pas fait le test mais c'était une supposition...

rt15 > où puis-je trouver cette variable ??








merci !



-----------------------------------------



Jack NUMBER
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
31 janv. 2008 à 16:50
Un tuto Delphi sur les variables d'environnement.




En virant les sécurités et la "généricité", ça donnerait quelque chose comme ça :
var
nSize: DWORD;
val: String;
begin
nSize:= 0;
nSize:= GetEnvironmentVariable('ComSpec', nil, nSize);
SetLength(val, nSize - 1);
GetEnvironmentVariable('ComSpec', PChar(val), nSize);
ShowMessage(val);
end;

Pour les voir sous Windows, clique droit sur le poste de travail,
puis "propriété", puis quelque chose comme onglet "avancé", et
finalement "variables d'environnement".

Un détail, m'enfin je précise : sous XP si on lance cmd, ComSpec
sera cmd, mais si on lance command.com, ComSpec sera command.com (Les
variables d'environnement sont propres à un processus, mais au
démarrage du processus, elles sont fournies par le système). Pour une
appli quelconque, ce sera cmd.
0
cs_JackNUMBER Messages postés 233 Date d'inscription jeudi 30 septembre 2004 Statut Membre Dernière intervention 26 juin 2011 5
1 févr. 2008 à 01:05
merci rt15
mais maintenant que je sais quel est le processus et où il est je ne peux pas utiliser le contenu de val
... imaginons simplement que windows (donc system32) soit sur le disque E: je ne peux pas prévoir toutes les éventualités :/
je vais resté sur command.com (surtout si il fonctionne sou sXP et Vista :P).

merci

ps: je découvre de nouvelle choses sur windows, merci !! ^^








-----------------------------------------



Jack NUMBER
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
1 févr. 2008 à 12:34
Dans le cas ou Windows est sur E:\, ComSpec pointe certainement sur E:\... aussi.

C'est tout l'intérêt des variables d'environnement.
0
cs_JackNUMBER Messages postés 233 Date d'inscription jeudi 30 septembre 2004 Statut Membre Dernière intervention 26 juin 2011 5
2 févr. 2008 à 12:39
je l'ai bien compris mais comment l'intégrer dans mon script de départ ??



-----------------------------------------



Jack NUMBER
0
cs_JackNUMBER Messages postés 233 Date d'inscription jeudi 30 septembre 2004 Statut Membre Dernière intervention 26 juin 2011 5
4 févr. 2008 à 15:28
super !
merci à tous !!!







-----------------------------------------



Jack NUMBER
0
Rejoignez-nous