jmorán tiene toda la razón al respecto del redireccionamiento.
Te queda la opción de, en lugar de ejecutar un bat, invocar al interprete de comandos, que si interpretará correctamente la redirección y creará el archivo de texto.
El nombre del interprete se almacena en la variable de entorno COMSPEC, y le podes invocar con el parámetro /c.
algo como:
Código Delphi
[-]
ShellExecute('c:\windows\command.com /c comando >archivo.txt', sw_hide);
Hasta luego.