2010-08-18 7 views
7

Comment puis-je envoyer des paramètres à CMD? par exemple envoyer un chemin et le démarrer à partir de ce chemin? Comment puis-je exécuter des commandes CMD? MerciEnvoyer le paramètre à CMD

Répondre

9

Pour commencer cmd.exe et exécuter immédiatement une commande, utilisez le drapeau /K:

procedure TForm1.FormCreate(Sender: TObject); 
begin 
    ShellExecute(Handle, nil, 'cmd.exe', '/K cd C:\WINDOWS', nil, SW_SHOWNORMAL); 
end; 

Pour exécuter une commande dans cmd.exe puis immédiatement fermer la fenêtre de la console, utilisez le drapeau /C:

procedure TForm1.FormCreate(Sender: TObject); 
begin 
    ShellExecute(Handle, nil, 'cmd.exe', '/C del myfile.txt', nil, SW_SHOWNORMAL); 
end; 
+0

Merci pour votre aide, mais il y a un petit problème, quand j'utilise ceci: ShellExecute (Handle, nil, 'cmd.exe', '/ K cd C: \ WINDOWS', nil, SW_SHOWNORMAL); cmd va s'exécuter mais pas à mon chemin entré, il commence à partir de l'endroit où j'ai sauvé mon projet. – Armin

+4

Je vous invite à lire la [documentation sur ShellExecute] (http://msdn.microsoft.com/en-us/library/bb762153.aspx), Armin. Vous y découvrirez à quoi sert le cinquième paramètre. –

+0

Je ne sais pas quel était le problème, mais après quelques essais, cela fonctionne correctement. merci, c'était une aide utile. – Armin

2

Vous pouvez également utiliser la classe de processus - voir un exemple ci-dessous

AProcess := TProcess.Create(nil); // Create process 
AProcess.Executable := 'cmd';        // Executable to run 
AProcess.Parameters.Add('/T:B0');       // Set background colour 
AProcess.Parameters.Add('/K');       // Keep open 

AProcess.Parameters.Add('title');       // A title for cmd 
AProcess.Parameters.Add('My Console');     // Title 
AProcess.Parameters.Add('&&');       // Start a new command line 
AProcess.Parameters.Add('cd');       // Change directory 
AProcess.Parameters.Add('D:\X\');      // Path to Folder 

{Set environment variable} 
AProcess.Parameters.Add('&&');       // Start a new command line 
AProcess.Parameters.Add('HOME='+MYSQL_DIR);    // Set env example 

AProcess.Parameters.Add('&&');       // Start a new command line 
AProcess.Parameters.Add('mysql.exe');      // run mysql.exe 
AProcess.Parameters.Add('--host=' + VAR_HOST);   // Parameter server 
AProcess.Parameters.Add('--port=' + VAR_PORT); // Parameter mysql server port 

AProcess.Execute; // execute detatched process command window remains visible 
AProcess.Free; // free memory