December 23, 2009

TIP: How to move Steam games to another drive in Windows 7/Vista/XP

With the Steam holiday sale blitzing everyone's wallets, there are plenty of people trying to find hard drive space to store all of their new games (seriously, S.T.A.L.K.E.R. for only $1.99, Mirror's Edge for $4.99).

One of the quirks with Steam is that it only allows users to install games to the same drive that Steam resides on.  For many, that is their main C: drive, which often fills up quickly.  I will detail the process used to move 3rd party games to another drive.  This will be for Windows 7 and Vista (Windows XP users click here).


NOTE: Click here for details on moving Valve's games (Team Fortress 2, Half Life 2, etc.).
NOTE: Both drives must be formatted with the NTFS file system.
NOTE: This moves the actual game files, not saved files that may be in different folders.

Steps

Step 1:

Create a folder named Steam2 on your additional storage drive (remember, the drive must be formatted NTFS).  Putting the folder in the root of the drive will make it easier to run the commands later.  Example:  D:\Steam2

Step 2:

Locate your Steam install folder.

Examples:
Windows 7/Vista 64-bit - C:\Program Files (x86)\Steam\
Windows 7/Vista 32-bit - C:\Program Files\Steam\

Step 3:

Next, locate \steamapps\common\ in your Steam install folder.  This is where 3rd party game installs are neatly kept in their own folders.

Step 4:

Select the game folders you wish to move and then select CUT.

Step 5:

Go to the Steam2 folder created in step 1 and click PASTE.  This will move the folders and files for each game over to your spare storage and remove them from the original drive.  The next step will link these moved folders back to their old locations so that Steam can find and use them.

Step 6:

Open a command prompt.

With the prompt open, use the mklink /J command for each game that you moved.  The mklink command creates a link to the moved folder.  The syntax is as follows:

mklink /J link target

mklink = the 'make link' command
/J = the junction prefix, which creates the link between folders
link =  the file path to the folder that needs to be linked to
target = the file path to the folder that has the data in it


Example using BioShock on Windows 7 64-bit:

mklink /J "C:\Program Files (x86)\Steam\steamapps\common\bioshock" "F:\Steam2\bioshock"

*It is important to note the quotations used around the file paths, as the command line does not like spaces or special characters

When this completes correctly, you should see:

Junction created for C:\Program Files (x86)\Steam\steamapps\common\bioshock <<===>> F:\Steam2\bioshock


Any questions?  Comment below or send an email to heartlessgamer _at_ gmail _dot_ com.