Well lets start from the beginning,
Probably the best way to defragment your hard drive, if it is in your budget, is to use a spare hard drive. In order to defrag you would copy all the data off the heavily fragmented drive onto a clean spare drive. You would then delete all data on the fragmented drive, and then restore that data back from the spare drive. This will then copy all the data back to the drive in a clean contiguous manner.
Hm i believe that isnt quite the idea of Defragmentation: the idea of defragmentation is, that you put "fragmented (splitted)" files back together, so your system does not have to search for every bit of a file, in order to use this file. So, as you suggested, you copy everything
on a HDD, reformat the HDD, and put everything back on... though if you do this, nothing has changed (other than you losing alot of time).
Also, if there's for example an OS running on the HDD, windows simply wont be able to move these files (as there in use).
One of the best solution on defragmentating, is still closing as much applications as possible (or use Smartclose
if necessary), also defragmentate more than once at a time may help
Also take a look at this post:
to add to some info - you could use a 3rd party defragger running from a LiveOS... this would defeat the fact windows cant move files its using when it is running itself...
By garyT85 here
What is "data" ? In other words: I only want to move data, I don't want to delete a Folder? Do I Highlight everything in a folder? Do I watch out for .BAT, .EXE,
.INI? If I'm in this type of folder, am I in the wrong place?