logramos hacerlo de la siguiente manera, es importante dar la ruta de mysql.exe que esta en bin, si como nosotros tienen que hacer varias corridas de scripts utilicen el shellexecuteex con el wait por que sino las siguientes puede que no las haga, si solo es una pueden hacerlo con el shellexecute, es importante que el parametro sea el comando a ejecutar, y tener cuidado con la sintaxis de --user=nombre y el --password=contraseña debe ser pegado, sino tampoco lo hace.
Código Delphi
[-]
function ejecutarscriptbd(ruta): boolean;
var
rutaestrbd, rutasql, rutadatos,
parametros, parametroelim, parametroact: string;
cadena, cadena2, cadena3 : PAnsiChar;
f: TextFile;
generado : boolean;
ExecInfo: TShellExecuteInfo;
begin
generado := false;
if suiEdtpathMysql.Text <> '' then
begin
if FileExists(ruta + 'CreacionBD.txt') then
begin
ruta := AnsiReplaceStr(ruta,'\','/');
rutasql := suiEdtpathMysql.Text+ 'bin\mysql.exe';
cadena := Pchar(rutasql);
parametros := '--user='+suiEdtuser.Text +' --password='+ suiEdtPassw.Text
+' --execute "source '+ ruta +'/CreacionBD.txt"';
cadena2:= Pchar(parametros);
try
ExecInfo.cbSize := SizeOf(ExecInfo);
ExecInfo.fMask := SEE_MASK_NOCLOSEPROCESS;
ExecInfo.Wnd := 0;
ExecInfo.lpVerb := 'open';
ExecInfo.lpFile := cadena;
ExecInfo.lpParameters := cadena2;
ExecInfo.lpDirectory := nil;
ExecInfo.nShow := SW_HIDE;
ShellExecuteEx(@ExecInfo);
WaitForSingleObject(ExecInfo.hProcess, INFINITE);
generado := true;
except
end;
result := generado;
end;