> 
> This is all windows though.
> 
Cross platform solution:
Uses process
...
  p:=TProcess.Create(nil);
{$IFDEF WIN32}
  p.CommandLine := 'cmd /c diff -r dir1 dir2 > diff.txt';
{$ENDIF}
{$IFDEF LINUX}
  p.CommandLine := 'bash -c "diff -r dir1 dir2 > diff.txt"';
{$ENDIF}
  p.Execute;
...
Ludo