2010-08-18 34 views
7

¿Cómo puedo enviar parámetros a CMD? por ejemplo, ¿enviar un camino e iniciarlo desde ese camino? ¿Cómo puedo ejecutar comandos CMD? GraciasEnviar parámetro a CMD

Respuesta

9

Para iniciar cmd.exe e inmediatamente ejecutar un comando, utilizan el /K bandera:

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

Para ejecutar un comando en cmd.exe y luego cerrar inmediatamente la ventana de la consola, utilice el /C bandera:

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

Gracias por su ayuda, pero hay un pequeño problema cuando uso esto: ShellExecute (Handle, nil, 'cmd.exe', '/ K cd C: \ WINDOWS', nil, SW_SHOWNORMAL); cmd se ejecutará pero no en mi ruta ingresada, comienza desde donde guardé mi proyecto. – Armin

+4

Te invito a leer la [documentación sobre ShellExecute] (http://msdn.microsoft.com/en-us/library/bb762153.aspx), Armin. Allí descubrirá para qué es el quinto parámetro. –

+0

No sé cuál era el problema, pero después de algunos intentos funciona correctamente. gracias, fue una ayuda útil. – Armin

2

También puede usar la clase Proceso - vea un ejemplo a continuación

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