Might try ScanDefrag or JkDefrag v3.16. Might find some other handy utilities at the sight. It also helps to delete the temp files prior to defragging. Also, before defragging, It may be helpful to run utilities such as RegSeeker to cleanup the Registry, as well as NT Registry Optimizer to then condense the Registry.
None of these thing ensure complete contiguation of all files, but they help. Also, these particular utilities may still leave a few empty areas so that in the future some application files won't become scattered too far and wide when they do become fragmented.
As always, be sure to first create a System Restore point or other reliable system backup prior to installing new programs in case they happen to render unfavorable result. For this you may want to consider The Emergency Recovery Utility NT as it does a much better job of returning the system to a previous state. That is, when used to restore the system, it actually removes files often left behind by System Restore. Also, it creates an exact and complete backup of the System Registry which System Restore in incapable of.
Hope this is helpful.
Charlie
hi all,
i am defragging my laptop drive (winxp) and while the windows xp program works ok, in the results window I see that the files are left with gaps between them. is there a way to optimize the way the defrag works so that everything is not just defragged but also neatly packed together so i don't end up later on with video files (4gb+) with 4 thousand fragments? thanks - fj

Chowhound
Comic Vine
GameFAQs
GameSpot
Giant Bomb
TechRepublic