No se que quieres decir con "no anda".
- Significa que da error: ¿Qué error?
- Significa que se queda colgado: ¿Responde a algo?, ¿ejecuta alguno de los scrips?
- Alguna otra cosa?
Por lo que veo, solo debería ejecutarte el primero, porque en el bucle repeat...until solo sales si el código de salida es WAIT_TIMEOUT.
Supongo que la condición debería ser until (exitcode<>"Está Procesando") o until (exitcode<>0) o until (exitcode<>-1) algo así.
Código Delphi
[-]
Repeat
exitCode := WaitForSingleObject( ProcessInfo.hProcess,1000);
Application.ProcessMessages;
Until (exitCode <> WAIT_TIMEOUT);