Delphi - CreateProcess - Ejecuta múltiples comandos
Quiero lograr lo siguiente con un CreateProcess () - llamada:
Cambiar a una copia de trabajo svnEjecutar comandos svnPipe la salida a un archivoIntento esto con la siguiente función
procedure TQPortMainForm.CmdMigrationClick(Sender: TObject);
var
StartInfo: TStartupInfo;
ProcInfo: TProcessInformation;
CreateOk: boolean;
input: String;
begin
{ fill with known state }
FillChar(StartInfo, SizeOf(TStartupInfo), #0);
FillChar(ProcInfo, SizeOf(TProcessInformation), #0);
StartInfo.cb := SizeOf(TStartupInfo);
//debug
input := 'D: && cd D:\Qport\trunk\Qport\ && ' + SVN_PATH + ' log > C:\users\PhilippKober\UNIQUE_NAME_BLUB.txt';
CreateOk := CreateProcess(nil, PChar(input), nil, nil, false, CREATE_NEW_PROCESS_GROUP + NORMAL_PRIORITY_CLASS, nil,
nil , StartInfo, ProcInfo);
{ check to see if successful }
if CreateOk then
// may or may not be needed. Usually wait for child processes
WaitForSingleObject(ProcInfo.hProcess, INFINITE);
end;
Simplemente no pasa nada. ¿Alguien tiene una idea de cómo lograr esto?
Gracias,
Filipina
EDITAR 1: Estoy usando Delphi XE - Compilación 7601: Service Pack 1
EDIT 2: Aquí está la solución:
var
StartInfo: TStartupInfo;
ProcInfo: TProcessInformation;
CreateOk: boolean;
input: String;
path : String;
cmd : String;
begin
{ fill with known state }
FillChar(StartInfo, SizeOf(TStartupInfo), #0);
FillChar(ProcInfo, SizeOf(TProcessInformation), #0);
StartInfo.cb := SizeOf(TStartupInfo);
path := 'D:\Qport\trunk\Qport\';
cmd := 'C:\Windows\System32\cmd.exe';
//debug
input := '/C' + SVN_PATH + ' help > C:\users\PhilippKober\UNIQUE_NAME_BLUB.txt';
CreateOk := CreateProcess(PChar(cmd), PChar(input), nil, nil, false, CREATE_NEW_PROCESS_GROUP + NORMAL_PRIORITY_CLASS, nil,
Pchar(path), StartInfo, ProcInfo);
{ check to see if successful }
if CreateOk then
// may or may not be needed. Usually wait for child processes
WaitForSingleObject(ProcInfo.hProcess, INFINITE);
end;