Exécuter toutes les commandes dos et autres facilement et sans problèmes

Description

Je poste cette source en réponse à des questions posées sur le forum

Utiliser les commandes Dos sans problèmes avec ShellExecute de l'unité ShellApi
et l'interpreteur de commande CMD.exe

Petites explications:
Les Switches /c : Exécute la ligne de commande et referme l'interpréteur de Commande
/k : Exécute la ligne de commande et attend que l'utilisateur referme
la fenêtre dos

Il y d'autres switchs pour cela allez dans l'aide de Windows et tapez CMD

Dans le TEdit vous pouvez lancer:
Une commande dos simple Ex: Dir c:*.*
Une application avec paramètres Ex: Notepad.exe Teste.txt
Plusieurs commandes mais il faut les mettre entre guillemets "" et
Séparer les commandes avec && Ex:
"Copy c:monfichier.txt E:Monfichier&&del c:Monfichier.txt"
Démarrer une application attendre qu'elle soit finie et en exécuter
une deuxième Ex:
"Start /wait %systemroot%System32calc.exe&&Dir c:*.*"

La même ligne de commande sous Dos donnerait ceci :
cmd.exe /k "start /wait %systemroot%System32calc.exe&&Dir c:*.*"

Et dans Delphi :
ShellExecute(Handle, Nil, 'CMD' ,
'/k "start /wait %systemroot%System32calc.exe&&Dir c:*.*"', Nil ,
SW_HIDE);

ATTENTION si vous Exécutez une ligne de commande avec comme switch /k et
avec l'option SW_HIDE dans ce cas la fenêtre est certes invisible mais elle
n'en est pas pour autant fermée et après une série de commande de ce type
vous aurez autant de Processus CMD Actif (ce qui à terme va saturer la mémoire).
C'est pour cette raison que j'ai mis dans la Procédure RadioButton1Click une boucle
qui vous évitera ce désagrément en forcent (si /k est sélectionné)
le mode SW_SHOWNORMAL

Dans vos applications si vous devez utiliser /k avec SW_HIDE,
je vous conseil donc d'ajouter '&&Exit' à votre ligne de commande
et de la mettre entre guillemets "" comme ceci :
"Dir c:*.*&&Exit"

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.