Windows – Script to move specific user folders in Windows 7

scriptuser-profileswindowswindows 7

When I install Windows Vista/7, I move some of my user folders onto a new partition (i.e. Documents, Musics, Pictures, etc.). This does not include moving the whole User directory, just some of the data folders. %AppData% remains in it's default location (%SystemDrive%\Users).

I'm getting tired of manually moving each of these folder's by changing their location under the properties dialog. Does anyone know of a way that I can script this to apply to the folders that I wish?

Best Answer

I usually move the folders to my separate partition and then symlink them back into the C:\Users folder. This has the advantage that legacy apps that tend to break on custom paths can access the folder as usual.

This snippet of batch script should do what you want. Note that you have to run it as Administrator for symlinking to work ( untested, YMMV ):

::Change this to the folder where you want to store your data
set DESTFOLDER="Z:\Path\on\other\partition"

::Switch to the current user's profile folder
::Change this to the folder you want to move from if you are moving another user's data
set SOURCEFOLDER="%USERPROFILE%"
pushd "%SOURCEFOLDER%"
for /d %%d in (Documents Music Pictures Videos) do
(
  ::Move the folder to the new partition
  move "%%d" "%DESTFOLDER%\%%d"
  ::Symlink it back to the original location
  mklink /d "%%d" "%DESTFOLDER%\%%d"
)

This is just of the top of my head, but it's similar to what I use for my Ubuntu install, where I symlink all of the subfolders of my home folder to my NTFS data partition.

Related Question