Microsoft Windows has this feature called symbolic links since Windows Vista. But, I am guessing not many are aware of this feature, nor did I. It wasn’t until I had a need for it and tried searching if there were any 3rd party applications which provided this feature. And I found this How-To Geek article. Eventually, I found other articles on this subject.
What are symbolic links?
Symbolic links are pointers referencing to another file or directory at a different location. Or, you can call them virtual file or directory. You can open a symbolic link file and the referenced file actually opens. You can, in a command prompt,
cd to a symbolic link directory and you will be “transported” to the referenced directory.
But, didn’t Windows already have shortcuts?
Yes, but symbolic links are way better. The Windows shortcut is just a
.lnk file which tells Windows the file or directory it is referencing to. Double-click on the shortcut in the Windows Explorer, Windows will open the file with its associated software, or go to that directory in Windows Explorer.
But, there are some things which cannot be done with a Windows shortcut.
Firstly, in the command prompt, when you have a Windows shortcut pointing to a directory, you cannot actually use the
cd command to change to that directory by calling the shortcut. Because Windows only sees it as an ordinary file.
Example: In my directory, I have the following files and directories.
C:\Users\alvin\Dropbox>dir Volume in drive C is Windows Volume Serial Number is SSSS-XXXX Directory of C:\Users\alvin\Dropbox 12/05/2016 10:45 AM <DIR> . 12/05/2016 10:45 AM <DIR> .. 11/26/2016 01:20 PM <DIR> blogs 04/24/2016 09:27 AM <DIR> book 02/04/2016 05:08 PM 836,507 Bookmarks 04/24/2016 09:26 AM <DIR> Camera Uploads 02/05/2016 10:45 AM 1,187 haha.txt.lnk 01/26/2016 01:20 PM <DIR> home 04/24/2016 12:00 AM <DIR> Public 02/05/2016 10:42 AM 947 Shortcuts.lnk 07/28/2009 03:36 PM 240 This is your Dropbox.txt 09/14/2016 11:10 PM <DIR> work 6 File(s) 1,752,496 bytes 8 Dir(s) 660,582,707,200 bytes free
Shortcuts.lnk is a shortcut to another directory. But I cannot run
cd Shortcuts.lnk in the command prompt. Instead, in the command prompt, you can type
Shortcuts.lnk and a Windows Explorer will open.
Secondly, following to that point, syncing a Windows shortcut will only sync the
.lnk file and not the referenced file or directory.
How to create a symbolic link?
In Unix systems, symbolic links are created using the
ln -s command. But, of course, the same cannot be applied to Windows.
The way to do it in Windows is to use the command prompt, but with administrator privileges. Very unfortunate that this is the only way and there are no options in the right-click context menu either. There are third-party softwares though, which you can use. But, I won’t discuss that in this post.
Open a command prompt and run it as administrator. Then type
mklink /?. This will display the usage and option when using this command.
C:\Users\alvin\Dropbox>mklink /? Creates a symbolic link. MKLINK [[/D] | [/H] | [/J]] Link Target /D Creates a directory symbolic link. Default is a file symbolic link. /H Creates a hard link instead of a symbolic link. /J Creates a Directory Junction. Link Specifies the new symbolic link name. Target Specifies the path (relative or absolute) that the new link refers to.
What type of links can I create with
There are three types of links you can create with the
- hard link: can only be used for files and not directories.
- junction: also called a soft link, is similar to a hard link, except that it can reference directories on different volumes on the computer.
- symbolic link: Similar to junction and can be viewed as an upgrade of junction.
How does this benefit me as a normal Windows user?
Using It For Syncing Files
One benefit of using symbolic links is when you use a file syncing or backup application, like Dropbox. Use the
mklink command to create a symbolic link inside the Dropbox directory, and your files will be synced across all of your devices. There is no need to copy the directories or files to the Dropbox directory.
Using It For Java Projects
Another one of my use cases for symbolic links is when you build or run your Java project in Windows and you encounter the nasty error message “CreateProcess error=206, The filename or extension is too long“. This is a limitation in Windows when executing a file with a long file name.
In my case, it happened at one of my previous work place when running ant scripts to build the Java project. The
ant script failed due to this error message because this project was referencing quite a number of Java library files, or what we call jar files, in the
-classpath option. The more library or
jar your project refers to, the longer the executing file name.
So, I created a symbolic link to
C:\. And, this made the
Of course, the other option is to create an uber jar file and have your
classpath point to it only.
Deleting Symbolic Links
To delete symbolic links, you can do it as how you would delete a normal file i.e. right-click the symbolic link and click on
Delete. Or in the command prompt, use the
del command. But, when using the
del command in the command prompt, it will remove files in the directory (not sub-directories), as well. This won’t happen though if you delete it from Windows Explorer. This doesn’t happen in Unix systems though. Looks more like a bug to me. Do keep this in mind!
I do hope that this article has given you a better understanding of symbolic links in general. And you would start to use them to improve your work-flow and increase your productivity.