Tell me more ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

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.

Am I misunderstanding something because isn't a directory junction the exact same thing as a directory symbolic link?

What's the difference between mklink /d f1 f2 and mklink /j f1 f2 ?

Also, I was under the impression that a directory is like some kind of file so what's the difference between a directory symbolic link and a file symbolic link?

share|improve this question
Related: superuser.com/q/347930/24500 – surfasb Dec 29 '11 at 13:05

2 Answers

up vote 28 down vote accepted

A junction is definitely not the same thing as a directory symbolic link, although they behave similarly. The main difference is that, if you are looking at a remote server, junctions are processed at the server and directory symbolic links are processed at the client. Also see Matthew's comment on the fact that this means symbolic links on the local filesystem can point to remote filesystems.

Suppose that on a machine named Alice you were to put a junction point c:\myjp and a directory symbolic link c:\mysymlink, both pointing to c:\targetfolder. While you're using Alice you won't notice much difference between them. But if you're using another machine named Bob, then

\\Alice\c$\myjp -> \\Alice\c$\targetfolder

but

\\Alice\c$\mysymlink -> \\Bob\c$\targetfolder.

(Caveat: by default, the system doesn't follow symlinks on remote volumes, so in most cases the second example will actually result in either "File Not Found" or "The symbolic link cannot be followed because its type is disabled.")

The difference between a directory symbolic link and a file symbolic link is simply that one represents a directory and one represents a file. Since the target of the link doesn't need to exist when the link is created, the file system needs to know whether to tell applications that it is a directory or not.

share|improve this answer
Just to be clear: there may well be other subtler functional differences between directory junctions and directory symbolic links. The remote vs. local thing is just the most obvious from a user (as opposed to a developer) perspective. – Harry Johnston Oct 5 '11 at 4:02
Sry I find the second paragraph quite ambiguous. If I create a symbolic link testlink on the client, which links to the c:\test folder on the server, doesn't testlink (symbolic link) also allow me to see the contents of the C:\test folder on the server? – Pacerier Oct 5 '11 at 5:31
@Pacerier the difference is where they are resolved. If you create a symbolic link on your local machine then you won't notice the difference. If you shared out your computer then a junction would resolve to your computer when viewed from another but a symbolic link would resolve to theirs – Matthew Steeples Oct 5 '11 at 7:43
@MatthewSteeples do you mean that if I create a symbolic link C:\testlink (which points to C:\test on my computer) and someone remote access my computer and clicks on C:\testlink, it would resolve to the C:\test on HIS computer, Whereas if I create a directory junction C:\testlink (which points to C:\test on my computer), and someone remote access my computer and clicks on C:\testlink) it would lead him to the C:\test on my computer? Or did I get it the wrong way round? – Pacerier Oct 5 '11 at 8:19
@Pacerier that's right. You've got it the right way round in your example – Matthew Steeples Oct 5 '11 at 8:41
show 6 more comments

directory junction will create a symbolic link to a folder (like an alias in OSX) symbolic link will create a symbolic link to a file (like a .lnk)

It's been a few years since i've had to mess with these so please correct me if i'm wrong.

share|improve this answer
3  
You're wrong. :-) – Harry Johnston Oct 5 '11 at 3:41
@HarryJohnston What's right? – Pacerier Oct 5 '11 at 3:43
Working on it, working on it ... – Harry Johnston Oct 5 '11 at 3:44
1  
Harry has it. lnk files aren't links or junctions to my knowledge – cwallenpoole Oct 5 '11 at 4:51
1  
@JdeBP: ouch. Doesn't surprise me, though, Cygwin has always seemed to be a bit of a hack. – Harry Johnston Oct 7 '11 at 0:19
show 5 more comments

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.