2010-08-18 3 views
7

Как я могу отправить параметры в CMD? например, отправить путь и запустить его с этого пути? Как я могу выполнять команды CMD? БлагодаряОтправить параметр CMD

ответ

9

Чтобы начать cmd.exe и немедленно выполнить команду, используйте /K флаг:

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

Для запуска команды в cmd.exe, а затем сразу же закрыть окно консоли, используйте /C флаг:

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

Спасибо за помощь, но есть небольшая проблема, когда я использую это: ShellExecute (Handle, nil, 'cmd.exe', '/ K cd C: \ WINDOWS', nil, SW_SHOWNORMAL); cmd будет выполняться, но не на моем введенном пути, он начинается с того места, где я сохранил проект. – Armin

+4

Я приглашаю вас ознакомиться с [документацией по ShellExecute] (http://msdn.microsoft.com/en-us/library/bb762153.aspx), Armin. Там вы узнаете, для чего нужен пятый параметр. –

+0

Я не знаю, в чем дело, но после некоторых попыток он работает правильно. спасибо, это была полезная помощь. – Armin

2

Вы также можете использовать класс Process - см. Пример ниже

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