Como outros já mencionaram, um link simbólico é um dos tipos de links disponíveis no nível do sistema de arquivos, o que o torna transparente para os aplicativos. Eu encontrei esta documentação muito útil (especialmente a "Colheita / Unroll / Splice Outer Junctions / Symbolic Links "seção"). E a ferramenta parece legal também. (Ao mencionar isso e mklink, esperamos que mais pesquisas encontrem essa discussão.)
Um atalho é um arquivo, não um link real, e geralmente só é seguido com sucesso como um link quando interpretado pela interface do usuário do Windows (interface do usuário). Por exemplo, quando você clica duas vezes em um atalho de pasta, o Windows o redireciona para esse outro local. (Isso inclui as caixas de diálogo genéricas File Open e File Save que a maioria das aplicações chama.) Na minha área de trabalho, eu tenho um atalho para esta pasta: C: \ ProgramData \ Microsoft \ Windows \ Menu Iniciar \ Programas \ G
O nome do arquivo do atalho é: C: \ Usuários \ usuário5 \ Desktop \ Jogos.lnk, embora o Windows suprima a extensão .lnk e apenas mostre "Jogos", mesmo que você desmarque "ocultar extensões de tipos de arquivos conhecidos". Mas se você abrir um prompt de comando e fizer um dir, verá:
C:\Users\user5\Desktop>dir "g*"
Volume in drive C has no label.
Volume Serial Number is 900...
Directory of C:\Users\user5\Desktop
03/08/2014 05:30 PM 1,710 Games.lnk
1 File(s) 1,710 bytes
0 Dir(s) 246,818,222,080 bytes free
Eu posso criar o equivalente com um symlink usando a opção \ D (para o diretório):
C:\Users\user5\Desktop>mklink /D mysymlink "C:\ProgramData\Microsoft\Windows\S
tart Menu\Programs\G"
symbolic link created for mysymlink <<===>> C:\ProgramData\Microsoft\Windows\Sta
rt Menu\Programs\G
C:\Users\user5\Desktop>cd mysymlink
C:\Users\user5\Desktop\mysymlink>
(Uma junção de diretório (\ J) também é uma opção, pois esse é um link de pasta.) O Windows Explorer, assim como este console e a maioria dos aplicativos, permite navegar "para dentro" desse aparente subdiretório, em vez de ( a) redirecionando "através de" para um local diferente ou (b) falhando.
Os atalhos não se comportam como subdiretórios. Eu posso invocar o comportamento de arquivo padrão da interface do usuário do Windows com este comando (isso abre a pasta "G" no Windows Explorer):
C:\Users\user5\Desktop>"Games.lnk"
Considerando que mysymlink está listado (veja a contagem) como um subdiretório verdadeiro e não pode ser iniciado dessa forma:
C:\Users\user5\Desktop>dir "my*"
Volume in drive C has no label.
Volume Serial Number is 900...
Directory of C:\Users\user5\Desktop
03/29/2014 06:08 PM <DIR> mysubdir
03/29/2014 05:40 PM <SYMLINKD> mysymlink [C:\ProgramData\Microsoft\Windo
ws\Start Menu\Programs\G]
0 File(s) 0 bytes
2 Dir(s) 246,816,153,600 bytes free
C:\Users\user57\Desktop>mysubdir
'mysubdir' is not recognized as an internal or external command,
operable program or batch file.
C:\Users\user57\Desktop>mysymlink
'mysymlink' is not recognized as an internal or external command,
operable program or batch file.
Por outro lado, você não pode alterar o diretório em um atalho:
C:\Users\user5\Desktop>cd "Games.lnk"
The directory name is invalid.
A interface do usuário do Windows permite clicar com o botão direito do mouse para editar as propriedades de um atalho. Ou o seguinte mostra exatamente o que é realmente armazenado no arquivo .lnk (dados binários), embora um editor hex seja exibido melhor:
C:\Users\user5\Desktop>notepad.exe "Games.lnk"
Considerando que tentar executar o Bloco de notas em uma subpasta real é exibida uma mensagem de erro "Acesso negado" e um bloco de notas vazio.
Por outro lado, se eu fizer um link simbólico de arquivo (não um link simbólico de pasta), posso iniciá-lo com o Bloco de Notas. Das seguintes chamadas do notepad.exe, as duas primeiras funcionam e a terceira falha (abre o arquivo .LNK, o gobbledegook binário).
C:\Users\user5\Desktop>mklink symplain.txt plain.txt
symbolic link created for symplain.txt <<===>> plain.txt
C:\Users\user5\Desktop>notepad.exe "symplain.txt"
C:\Users\user5\Desktop>notepad.exe "plain.txt"
C:\Users\user5\Desktop>notepad.exe "plain.txt.lnk"
Isso não é apenas uma coisa do console. Copiando um atalho para o Bloco de Notas na minha área de trabalho e tentando arrastar e soltar cada um dos três, ele exibe exatamente o mesmo comportamento. (Como arrastar e soltar, ao contrário do clique duplo, permite que o aplicativo interprete o atalho.)
Em relação às diferenças entre links simbólicos de diretório e junções, consulte esta discussão , e aqui está uma descrição útil :
"Uma grande diferença na forma como o Windows resolve links simbólicos e junções de diretório é onde o processamento ocorre. O Windows processa links simbólicos no sistema local, mesmo quando fazem referência a um local em um servidor de arquivos remoto. Windows processa junções de diretório que referenciar um servidor de arquivos remoto no próprio servidor Os links simbólicos em um servidor podem, portanto, referir-se a locais que só podem ser acessados de um cliente, como outros volumes de cliente, enquanto que junções de diretório não podem.Para resolver isso, o Windows Vista suporta o novo tipo de link simbólico para arquivos e diretórios.
"Muitos comandos do sistema de arquivos foram atualizados para entender as implicações dos links simbólicos. Por exemplo, o comando Excluir não sabe seguir os links, o que resultaria na exclusão do destino, mas para excluir o link. No entanto, porque nem todos os aplicativos podem manipular links simbólicos corretamente, criar um link simbólico requer o novo privilégio Criar link simbólico que somente administradores têm por padrão. "