Hola,
Asegúrate de que el archivo en cuestión exista verdaderamente. Si echas un vistazo al ejemplo que adjunto verás que todo va como se espera. También puede ser que el archivo BAT se ejecute, pero, que, al no haber "pausa" alguna en el mismo, al terminar su ejecución la consola simplemente se cierre.
PD. Usa etiquetas [ DELPHI ] y verás qué bien quedan tus mensajes.
Código Delphi
[-]
uses
ShellApi;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
ShellExecute(0,'open','archivo.bat',nil,nil,SW_NORMAL);
end;