Como posso excluir um link simbólico?

322

Eu criei um link simbólico usando mklink. Agora preciso alterá-lo, mas não consigo descobrir como excluí-lo para que possa recriá-lo corretamente.

Ben V
fonte

Respostas:

557

Tenha muito cuidado.

Se você tiver um link simbólico que é um diretório (feito com mklink /d), o uso delexcluirá todos os arquivos no diretório de destino (o diretório para o qual o link aponta), em vez de apenas o link.

SOLUÇÃO: rmdir por outro lado, apenas excluirá o link do diretório, e não para o que o link aponta.

eddyq
fonte
103
Tendo feito isso acidentalmente (excluído o conteúdo completo da pasta de destino), essa é uma dica importante.
Simon Gillbee
4
Esta resposta não é totalmente precisa. Delexclui arquivos, não pastas. Portanto, você não usaria delpara excluir o link.
AMissico
12
Mas não use rmdirno PowerShell. Envolva-o cmdprimeiro. Veja minha resposta abaixo ...
northben
4
Que tal se eu excluí-lo através do Windows Explorer ????
Cheung
8
Lá, os funcionários da Microsoft vão novamente, apenas tentando arruinar minha vida, carreira e sistema operacional Windows.
precisa saber é o seguinte
62

Para remover os links simbólicos do diretório criados com mklink /dele, é seguro excluir o link simbólico no explorer.

ddelrio1986
fonte
27
+1 por dizer às pessoas que é salvo excluir o link simbólico através do Windows Explorer.
Marissico
3
Isso está correto. Eu faço isso o tempo todo. Apenas testei novamente agora.
ddelrio1986
2
Isso também funcionou para mim. Eu apaguei o link e não a pasta de origem que estava vinculada. talvez que o problema.
R Hughes
3
É seguro excluí-lo com o botão direito do mouse -> Excluir. Isso NÃO exclui a pasta vinculada.
Hexo 29/09
mklink / d Não funcionou para mim no Windows 7 .. Embora eu possa estar usando uma versão antiga
abelito
47

Para um link simbólico para um arquivo, use del. Para um link simbólico para um diretório criado com mklink /d, use rmdir.

George V. Reilly
fonte
5
Aviso: "del" excluirá o arquivo e não apenas o link.
WoodenKitty
6
O aviso de @Tristan não está correto, esta resposta é precisa. Testado no Windows 7.
jiggunjer 23/06
1
No Windows 7 SP1 (64 bits), um link simbólico que aponta para um arquivo (por exemplo, criado usando MKLINK) ou para um diretório (MKLINK / D) pode ser excluído no Windows Explorer, usando a opção 'excluir' da GUI comum do Windows , sem excluir o destino. Mesmo um JUNCTION (por exemplo, criado usando o comando MKLINK / J), se excluído no Explorer, não excluirá o diretório de destino nem seu conteúdo. Se não estiver vazio, o diretório de destino nem mesmo poderá ser excluído usando o comando junção DEL no prompt de comando. Testado hoje.
Ed999
No Windows Server 2012, este removido o conteúdo do diretório que o meu link simbólico foi apontavam para ...
C Bauer
Você deve avisar as pessoas para não rmdirusarem os links do Powershell!
NH.
28

No Powershell, não use rmdir! Use em cmd /c rmdir .\Targetvez disso. Eu mesmo testei e confirmei aqui: http://kristofmattei.be/2012/12/15/powershell-remove-item-and-symbolic-links/

Northben
fonte
Esse blog confunde o significado de "Alvo", que é o diretório real para o qual o link aponta e que pessoas geralmente desejam evitar a exclusão ao remover o link.
Kreemoweet
2
rmdiré um comando interno do cmd.exe , portanto, obviamente, para chamá-lo de outros shells que você precisará cmd /cou cmd /k. rmdirno PowerShell é apenas um alias paraRemove-Item
phuclv
24

Existe outra solução testada por mim e segura de usar. basta adicionar à pasta real _ (exemplo: foo transformou-se em foo_) e simplesmente exclua o seu link simbólico e remova _ da sua verdadeira pasta.

vcorp
fonte
2
sim, isso é 100% solução mais segura depois de saber que PowerShell não dar como ** t sobre rmdir
test30
Esta é uma precaução inteligente. 1
Hanna
Aviso: Eu não acho que isso PODE não funcionar no Win10, pois está corrigindo atalhos ao renomear. (Atalhos pelo menos clássicos) Ainda não testado.
Hexo 29/09
Eu fiz isso por precaução. Depois de renomear a pasta de destino, o link do Symbolink falhou ao tentar acessá-lo, para que eu pudesse excluí-lo sem me preocupar.
Andrew
21

O mklink não pode ser usado para excluir links simbólicos. Para remover um link simbólico, basta excluí-lo como se estivesse removendo um arquivo normal. Por exemplo, para excluir o link simbólico foo criado acima, digite o seguinte comando:

Se o link for um link físico para um diretório:

C:\test>rmdir foo

ou então, se o link apontar para um arquivo (ao contrário de um dir)

C:\test>del foo

Fonte: http://www.mydigitallife.info/2007/05/22/create-symbolic-links-hard-links-and-directory-junctions-in-vista-with-mklink/

Daisetsu
fonte
2
Apenas certifique-se de não excluí-lo com del /Sou Explorer.
Hello71
1
Veja a resposta do eddyq abaixo porque usar del para um link criado para um diretório não funcionará e, em vez disso, tentará excluir o conteúdo da pasta.
jpierson
2
Hardlinks para diretórios não existem. Eu acho que você quis dizer link simbólico.
Brilliand
0

No meu caso (Windows 10), depois de criar o link simbólico usando

MKLINK /D "C:\Users\username\Dropbox\MyProject" "C:\SourceProject"

e excluir via excluir usando o explorador de arquivos ou a tecla de exclusão do teclado também exclui o diretório original .

O que você deve fazer é remover o link via prompt de comando.

C:\Users\username\Dropbox>rd /s MyProject

Para obter detalhes sobre o comando rd: https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/rd

tetedp
fonte
0

A maneira mais simples é mover a pasta (para a qual o link simbólico está apontando) para outro local (para a pasta pai) e excluir o link simbólico. Nenhum arquivo será prejudicado!

netgoblin
fonte
0

Eu instalei esta extensão de shell de link . Com isso, você tem 2 métodos.

MÉTODO 1

Crie-o usando o menu de contexto, como mostrado e excluindo através do gerenciador de arquivos.

Teste com uma pasta como a C:\Windows\Logsmostrada ou semelhante. Estou apenas criando um diretório com todos os locais possíveis de arquivos temporários para excluir e queria uma pasta central onde pudesse monitorar o tamanho deles por meio de links simbólicos.

Observação: a tela branca é apenas o UAC .

excluir do método explorer

MÉTODO 2

A maneira mais segura não documentada aqui AFAIK .

No link simbólico criado ( em passos mostrados acima ), botão direito do mouse sobre ele agora e clique em Propriedades, em seguida, ir para a Link Propertiesguia.

Nota: Esta extensão do shell adicionou esta guia.

Antes de prosseguir, muitas outras informações podem ser encontradas aqui , também, na página inicial estão as versões x64 e 32 bits .

Portanto, para continuar, aqui você pode adicionar qualquer coisa ao campo de destino, desde que seja diferente do destino original.


  1. Aqui está um antes com o alvo como C:\Windows\Logs alvo antes

  2. Aqui está um depois com o alvo como C:\Windows\Logs_, observe o extra _no final.

    alvo depois

  3. pressione OK

  4. Você pode verificar isso novamente, seguindo as mesmas etapas de 1 a 3 acima, para garantir que ela esteja travada. Dessa vez, você receberá uma mensagem de erro ao clicar na Link Propertiesguia para que o link esteja quebrado.

  5. Agora é seguro (r) excluir o link simbólico do que o método 1 IMHO.


Mas! Ambos os métodos funcionam aqui, portanto, é inteiramente da escolha do usuário. Eu gosto do método de propriedades que eu encontrei, então você tem 100% de certeza de que o link está quebrado usando a etapa 4 acima.

Aqui está um gif meu criando um link simbólico com o botão direito do mouse arrastando uma pasta para outra e escolhendo a opção de criar um link simbólico no submenu.

Para excluir, siga as etapas 1 a 5 acima do método 2 ou siga o método 1.

Como criar e excluir um link simbólico usando o método de propriedades

Observação: a tela branca é apenas o UAC .

gif sobre como criar e excluir links syn usando o método properties

Stephen Sherry
fonte