mklink error: Não é possível criar um arquivo quando esse arquivo já existe

27

Estou tentando criar um link simbólico na minha máquina win7 de 64 bits para redirecionar os dados de backup do iTunes para outra unidade. Tenho certeza de que a sintaxe está correta, mas não consigo entender como limpar esse erro. Eu tentei os dois comandos abaixo que têm o mesmo erro. Estou executando na janela de comando do administrador. Poderia haver alguma política de grupo corporativa que me impedisse de executar este comando?

mklink /D "C:\Users\odellt1\AppData\Roaming\Apple Computer\MobileSync\Backup" "E:\Apple Computer\MobileSync\Backup" 

ou

mklink /J "C:\Users\odellt1\AppData\Roaming\Apple Computer\MobileSync\Backup" "E:\Apple Computer\MobileSync\Backup"

Erro

Não é possível criar um arquivo quando esse arquivo já existe.

ChiliYago
fonte
qual é o diretório original?
Akram Berkawy
o diretório original é C: \ Users \ odellt1 \ AppData \ Roaming \ Apple Computer \ MobileSync \ Backup
ChiliYago
A pasta à qual você está vinculando a unidade E existe? Existe uma pasta com o mesmo nome que o link na unidade C? A unidade E está formatada em NTFS?
Harry Johnston
11
A sintaxe está correta, antes de executar este comando, execute as seguintes etapas. Mova todo o conteúdo da pasta de backup mobilesync atual para E: \ Apple Computer \ MobileSync \ Backup. Quando terminar, exclua a subpasta de backup vazia de "C: \ Usuários \ odellt1 \ AppData \ Roaming \ Apple Computer \ MobileSync". Uma junção pode ser criada apenas se uma subpasta com o mesmo nome não existir no local.
Karanvir Kang 21/09

Respostas:

29

a sintaxe está incorreta. mklinktem a seguinte sintaxe:

mklink [options] <Link> <Target>

Targeté o arquivo / pasta que existe e Linké aquele criado com links para o destino.

então o comando deve ser:

mklink /D "E:\Apple Computer\MobileSync\Backup"  "C:\Users\odellt1\AppData\Roaming\Apple Computer\MobileSync\Backup"

veja este link para uso do mklink.

Akram Berkawy
fonte
Analisei os documentos e sendo tão breve que você pensaria que não haveria problema em executar. No entanto, sem sorte, mesmo revertendo o link / destino, como você sugere, resulta na mesma mensagem de erro.
ChiliYago
11
então você deve verificar que a E: \ Apple Computer \ MobileSync \ pasta de backup não existe
Akram Berkawy
11
Isso funcionou. Percebi que a exclusão do caminho completo resultou em erro: "O sistema não pode encontrar o caminho especificado." Então eu restaurei o caminho e apaguei apenas a última pasta no caminho (Backup) e funcionou.
ChiliYago
11
Esta não é a resposta correta. Isso cria um simlink, que não redireciona o iTunes para outra unidade. Faz exatamente o contrário - direciona outra unidade para a pasta de backup do iTunes.
Vaiden
8

A maneira simples é excluir a pasta Backup no backup original da pasta apple (em C: \ driver) Quando executamos o comando:

mklink /J "%APPDATA%\Apple Computer\MobileSync\Backup" "E:\iTune Backups"

O Windows criará um atalho de link Backup em C: \ driver.

Khanh.tq
fonte
2
Esta é a resposta correta que faz o OP pretendia fazer
Vaiden
4

Eu tive o mesmo problema com o "arquivo já existe erro", até usar o "% AppData% ':

mklink / J "% APPDATA% \ Apple Computer \ MobileSync \ Backup" "E: \ backups do iTune"

Junção criada para C: \ Users \ Me \ AppData \ Roaming \ Apple Computer \ MobileSync \ Backup << === >> E: \ iTune Backups

Nota: Certifique-se de usar aspas simples, caso contrário, você recebe um erro de comando de sintaxe.

Franco
fonte
Eu gosto desse método simples, certificando-se de que as pastas de origem e destino não estejam presentes antes de criar a junção. Criar a junção cria a pasta de origem, mas não a pasta de destino. Então eu tive que criar manualmente a pasta de destino e tudo está funcionando conforme o esperado.
timoto 13/05
Isso foi corrigido para mim, mas seria bom ter uma explicação sobre o porquê o% AppData% o corrige.
Aureis
2

Eu só queria acrescentar que o erro que você mencionou no seu comentário acima System cannot find the path specifiedparece ocorrer quando você está vinculando simbolicamente em um subnível de pasta que não existe na fonte original do link.

Significando que você não pode vincular

"c:\program files (x86)\some folder1\some folder2\"

marcar

"d:\programs\some folder1\some folder2\"

Não funcionará a menos que pelo menos

"c:\program files (x86)\some folder1"

existe como parte da fonte do link. Você teria que criar um link

"c:\program files (x86)\some folder1"

para

"g:\programs\some folder1" 

ou você teria que criar pelo menos uma pasta vazia em

"c:\program files (x86)\some folder1"

e depois crie o link

"c:\program files (x86)\some folder1\some folder2" 

para

"g:\programs\some folder1\some folder2"
Kace36
fonte
Parece um erro da parte da Microsoft, mas esta resposta está realmente correta. Quando você cria um link C:\foopara E:` for instance, E: \ foo` deve existir para entrar no cd C:\foo; no entanto, quando você faz o cd, você é colocado em E:` -- **not** E: \ foo`. Obrigado por apontar isso, eu nunca teria descoberto.
Qix