First of all, trebuie sa ai grija de memoria heap, punand
{$M 8192,4192,65536}
inainte de prima linie a programului.
Apoi, inainte si dupa apelul lui
Exec vei folosi SwapVectors, pentru a te asigura ca nu strici handlerele de intreruperi (teoretice

). Apoi calea ta de Windows\System32 nu face mare lucru. Ai nevoie de calea catre command.com, care o poti lua cu
GetEnv('COMSPEC')
Pentru a ii spune lui command.com ca vrei sa execute comanda care i-o dai, va trebui sa-i dai si un parametru /C.
Codul final ar arata ceva in genul asta :
uses crt,dos;
var cmdline:string;
begin
clrscr;
write('Comanda: ');
readln(cmdline);
SwapVectors;
exec(GetEnv('COMSPEC', '/C ' + cmdline);
SwapVectors;
ReadKey;
end.
P.S. daca nu functioneaza, nu e nici o problema. Nici mie, pentru ca l-am scris direct aici (basically, nu e testat

)