Como crio um link simbólico no Windows?

113

O Windows Vista adicionou a capacidade de criar links simbólicos para arquivos e diretórios. Como crio um link simbólico e quais são as versões atuais de consumidor e servidor do Windows que o suportam?

vaqueiro
fonte
6
Alguém pode destacar as diferenças entre um link simbólico e um atalho?
#
11
@tomjedrz: se você estiver usando um atalho, qualquer API para abrir esse atalho abrirá um arquivo de texto que contém o caminho para o arquivo / pasta de destino. se você estiver usando links, qualquer API para abrir esse link abrirá o arquivo / pasta de destino.
Afriza N. Arief
2
Ao contrário do que todas as pessoas disseram, confirmo que é possível usar links simbólicos no Windows XP . (Eu o uso para instalar o banco de dados do Picasa na pasta compartilhada da VM). Dê uma olhada em schinagl.priv.at/nt/hardlinkshellext/hardlinkshellext.html e navegue até a seção "Links simbólicos para Windows XP". HTH
Adam Ryczkowski

Respostas:

109

Você pode criar um link simbólico com o utilitário de linha de comando mklink.

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.

Links simbólicos via mklink estão disponíveis desde o Windows Vista e Windows Server 2008. No Windows XP e Windows Server 2003, você pode usar

fsutil hardlink create <destination filename> <source filename>

De acordo com o msdn.microsoft , os links simbólicos NÃO são suportados no FAT16 / 32 e no exFAT. Parece que o Windows apenas os suporta de ou para Partições NTFS. Os futuros sistemas operacionais Windows provavelmente continuarão com o suporte ao mklink.

Você pode ler mais informações sobre esse novo recurso no Microsoft TechNet , no blog de Junfeng Zhang ou no howtogeek.com .

vaqueiro
fonte
Seria bom adicionar o URL do Technet de David à sua entrada para que fique completo.
Michael Pryor
nota do site, o que é uma junção (opção / J)?
Roy Rico
Junção de diretório, um tipo de link simbólico de diretório. support.microsoft.com/?kbid=205524
Lara Dougan
11
O NTFS oferece suporte a links (com vários nomes) desde o Windows 2000, mas eles foram usados ​​apenas internamente, principalmente nos compartilhamentos de domínio SYSVOL; alguns utilitários estavam disponíveis para gerenciá-los, mas não estavam embutidos; O Vista introduziu a ferramenta MKLINK e o uso extensivo de links nas instalações padrão do Windows.
Massimo
2
Seria bom mencionar fsutilde resposta @ de Sascha abaixo para fornecer uma solução para o Windows Server 2003.
Phrogz
30

No Windows XP, você pode usar fsutil(embutido no sistema operacional) para criar um hardlink

 fsutil hardlink create c:\foo.txt c:\bar.txt

Lembre-se de que o fsutil só funcionará se os dois estiverem na mesma unidade

saschabeaumont
fonte
2
Boa resposta. Estou no WinXP / Win2003 e precisava do mklink, mas isso resolveu o meu problema. Eu costumo usar junction.exe da Sysinternals, mas que só lida com diretórios e neste caso eu precisava de um link do arquivo
s3v1
Uma pena que um link simbólico não possa ser criado pela fsutil, pelo menos pelo que li em outro lugar. Este é um link físico e, portanto, não é uma resposta para a pergunta.
Vlasec 5/05
10

Uma coisa pequena, se você estiver usando o Powershell, o mklink não funciona diretamente, execute-o assim:

PS C:\d\eclipseInstalls> cmd /k mklink /D antRunner 3.4.2
symbolic link created for antRunner <<===>> 3.4.2
Dennis Williamson
fonte
11
Isso deve ser / c, não / k, caso contrário, o cmd.exe não será encerrado.
dangph
7

Use mklink ou junção da Sysinternals (Microsoft). Eu acredito mklink irá funcionar no Windows 2000 e acima, mas não consigo encontrar qualquer documentação duro nisso. junção é para Windows 2000 e superior.

user2287
fonte
11
O comando mklink é o Vista e o Server 2008 e superiores, como eu apontei acima.
4

Não encontrou isso em nenhuma das respostas, mas o linkd.exe (no kit de recursos do Windows 2003 aqui ) permite criar junções, que funcionam praticamente como um link físico / físico no Linux. As junções estão disponíveis no Windows 2000 e superior; portanto, basta copiar o linkd.exe no sistema de destino e ele deve funcionar.

romandas
fonte
11
Note que o `/ linkd` é apenas para diretórios, não para arquivos.
21411 Phrogz
3

Se você ainda estiver no Windows antigo, como XP, 2000, 2003, etc., tente o NTFS Link .

Eu uso isto muito. Você obtém uma opção de menu com o botão direito do mouse no shell para criar um ponto de junção. Coisas excelentes.

Stewart Robinson
fonte
Isso funcionou muito bem para mim no Windows 2003 por criar um link simbólico para uma pasta em outra unidade. Obrigado!
Phil
Comentário de usuário anônimo, originalmente editado na resposta: "Nota: Para o XP funcionar, ele deve estar usando uma partição NTFS, não FAT ou FAT32. Consulte aumha.org/win5/a/ntfscvt.php para obter etapas sobre como converter para NTFS ".
squillman
2

Consulte a entrada do TechNet . Acredito que seja um recurso do Vista / Server 2008 e superior.


fonte
Legal, nunca se sabia sobre esse recurso antes, obrigado pelo link, poderia ser muito útil !!!
11009 Marc-Andre R.
1

Para garantir que seus links funcionem, convém verificar a configuração do seu servidor. Os links podem ser criados, mas, a menos que você use a configuração symlinkevaluation no comando a seguir, seus links poderão não funcionar.

fsutil behavior set SymlinkEvaluation L2L:1 R2R:1 L2R:1 R2L:1

Consulte também http://technet.microsoft.com/en-us/library/cc754077%28v=ws.10%29.aspx . Por padrão, apenas as opções locais estão ativadas.

user906489
fonte