I first use CONTIG.EXE from MS-Sysinternals for files with size over 1GB. It often finds a place for one whole file (which DEFRAG doesn't see ??).
After defragmenting most big files with CONTIG, I start Windows XP DEFRAG and let it do the rest.
This methode takes 20 min on my 500 GB hard disk against 2 hours with DEFRAG only; and defrag only often could not finish his job!
Congrats to MS for CONTIG, it's one of this great, simple command-line-only utilities, all in one EXE-file with 200kb.
Keep Up with TechRepublic