I've done a few in-place migrations on some virtual machines. Its a lot simpler if the upgrade isn't too big and the OS is aceptable. And the VM snapshot simplifies...
I suggest that installig as a named instance (compared to the default instance) does much of this automatically. And if within a network the port is randomised each SQL restart....
SysInternals (Microsoft) has a tool called contig. Contig uses the inbuilt windows filesystem defrag engine, and can specify a drive, a folder, or individual files. And yes it is...