Windows 7 Virtual Folders?

I've got Steam installed. Steam is installed to c:\Program Files\Steam. Steam downloads various games to a sub folder called SteamApps. The only option available is for steam to download and install apps to the same location as steam. A typical setup could look like this:

C:\Program Files\Steam\SteamApps\common\Game1
C:\Program Files\Steam\SteamApps\common\Game2
C:\Program Files\Steam\SteamApps\common\Game3
C:\Program Files\Steam\SteamApps\common\Game4

Etc.

My drive C is an SSD, so space is an issue. Game1 is very disk intensive, so I need it to remain on drive C, but I've got a terrabyte of space that I'd like Game2 and Game3 to be installed on.

Is there a way to create a virtual folder called "Game2" that really points to my bigger hard drive and to make it in such a way that Steam (or any app really) would be able to browse to the location on drive C and not even realize that it was really accessing drive D: where the virtual folder points to?

So in the end, C:\Program Files\Steam\SteamApps\Common\Game2 would exist as a folder but in reality it maps to D:\Games\Game2.


Try the following:

Open a command prompt with administrative permissions:

mklink /D Virtual_Folder_Here Real_Folder_Here

Example, you want to install something to D:\Games, but you want it to appear as C:\Games.

mklink /D C:\Games D:\Games

This will create a folder D:\Game which also appears as C:\Game. Anything that references C:\Game will be redirected to D:\Game.

Since I am not completely familiar with steam, I have not given an example that matches your exact folder. If steam allows you to pick the folder it installs to (Which due to you not just installing it to the other drive, I am not so sure it does.) you could create they symbolic link first. If however it does not, you may need to do some file-transfers, moving it to the new location and then creating the symbolic link. Example:

Steam installed your game to: C:\Program Files\Steam\SteamApps\common\Game2

Now, you create your folder: D:\GameGoesHere

Then, you copy all the files from the original folder and put it in D:\GameGoesHere, then you can create the link:

mklink /D "C:\Program Files\Steam\SteamApps\common\Game2" "D:\GameGoesHere"

Notice I used quotations this time due to the spacing of "Program Files." Also note that before creating the link the virtual folder must NOT be a real folder. So, if the folder you want to be a link exists, you must delete it first (Not before you copy it, of course!)


ANSWER: Why (and how) This solutions works


If you need to reclaim this space/relocate the usage onto another drive you have a fiew great options

You can safely relocate to any new storage location like...

  • local/live storage
  • online storage
  • near-line storage
  • offline storage

...just so long as the your OLD location is NTFS and the new location:

  1. is SMB based
  2. conforms to Windows LANman -- if you use symbolic links/want to relocation onto a network server/device (see below()
  3. can be added/assigned to the existing file system/"My Computer" using a tool like :
    • the DOS/Windows shell assign command
    • Windows "Computer Management" (compmgmt.msc)
  4. can be mounted it to a drive letter or other mount point/directory

So, essentially as of today (2014-05-02), we're talkin about:

  • another live (mounted) partition
  • an optical disc (CD, DVD, etc.) with a live filesystem like FAT, or NTFS
  • an external hard drive
  • a USB drive
  • a network drive

    NOTE:

    If and when you are prompted for the media or receive any errors about missing files/missing location, you simply make sure to remount/reinsert your drive/media if it's not already a live partition.

.

9 out of 10 times, this will be the case:

Therefore, you'll find this to be very straightforward, and you have a few great options to choose from, which frankly, yield roughly the same results:

  1. Create a directory junction to the new location:

    • Junctions allow one directory to point to another.
    • Junctions can only be used on local storage
    • They are are recognized at the file system level as an alias entry in the File System Table (FSTAB).
      • Therefore, it's transparent to all programs, including the OS itself.
      • In other words, it is NOT seen as a file that simply points to another location (like a shortcut) and therefore always works without incident.
    • Junctions can only have absolute references to files. So, even if you move an entire directory structure with a junction within it, with the structure completely intact, you will have to recreate your junction.
    • Junctions can be named anything, i.e. they don't have to reflect the same name as the folder they are pointing to.
  2. Create a symbolic link to the new location:

    • Symbolic Links are file system objects that point to other file system objects.
    • They are Similar to junctions, and are reparse points.
    • However, in some rare occasions, with some programs, I've seen them be NOT recognized (this is sometimes the case with Windows Special Folders.
    • But, they are more flexible in that:
      • Symbolic links can be created as absolute or relative references.
      • can be used to point to SMB/LANman network locations (windows servers, SMB devices, etc.)

PROCEDURES:


So, move your files & folders to the new location then:

  1. OPTION1 (natively): Just issue the built-in Windows Vista / 7 / 8 command and the cmd prompt:

    • Create a junction ("hard" link to a directory):

      mklink /J <oldpath> <newpath>
      
    • Create a symbolic link ("soft" link to a directory):

      mklink /D <oldpath> <newpath>
      
  2. Option2 (use a tool): A GREAT alternative is a free handy utility I've been using for years called "Link Shell Extension" (LSE) (or Google it).

    Just download, unpack, and run (no installation)

    LSE allows you to create:

    • symlinks
    • hardlinks
    • junctions
    • smartcopies
    • smartclones
    • smart mirrors
    • smart moves
    • splices
    • multiple sources
    • and bunch of other stuff I never use, frankly
      .

    It's a brilliant free product that creates a windows explorer context menu that allows you right-click on your LINK-TARGET folder then drag it to where you'd like to create the actual link.

    You can of course rename the link to anything you'd like.


Shockingly enough, there's a tool just for this called steam mover, designed to solve the very same issue, which works in windows 7 .It really is a cunningly disguised way of doing symlinks easily. Basically it will move the files automatically and do a symlink for you, so everything seems to be where steam expects it, in C: but its really elsewhere.

I'd note this will only work on windows 7 and vista since MS added symlinks with those versions of windows