In the absense of a reply, I’ll elaborate a bit.
Modern OSes (Vista, 7) schedule a defrag by default, 1am every Wednesday. XP and earlier, far as I can remember, doesn’t (though I’d have to check to be sure). So if you’re running XP there’s a good chance that it’s been a considerable amount of time since it’s last been run.
On older systems (Windows 9x vintage), defrag would restart if it detected a disk write. Result, defrag takes forever.
The partition type has an impact on fragmentation. FAT32 fragments like a sod, it just doesn’t care. NTFS makes a stab at avoiding fragmentation on the fly (in the days of NT4, Microsoft’s stance was that ‘NTFS doesn’t need defragmenting,’ but they seem to have relented these days).
The more files you’ve got, and the bigger the disk, the longer a defrag will take. Conversely, the faster your PC (and in particular, the disk subsystem), the quicker it’ll be.
This is what I’d recommend for an efficient defrag.
1) Run a chkdsk on the disk; Right-click the drive in My Computer, go to Properties, then Tools, and click Check Now. Tick the first option, leave the second empty. It’ll complain that it can’t run; agree to the schedule question, and then reboot.
2) Run TFC to wipe out all the accumulated cruft on the system. This might need another rebooot.
3) Now run the defrag, straight after a clean reboot. Be aware that any other applications you’re running will adversely affect performance, so don’t use your PC if you can help it.
4) Consider running defrag before installing any major applications; this will go a long way towards keeping fragmentation to a minimum.