Como fazer atalho para outro atalho?

9

Ao tentar criar um atalho para outro atalho, o Windows XP atribui o destino do atalho original ao novo atalho. Isso acontece mesmo quando eu insiro o caminho de destino manualmente e fico com uma cópia do atalho original. Não é isso que eu quero.

Como fazer um .lnkarquivo apontar para outro .lnkarquivo diretamente? Essa forma de dupla indireção seria muito útil para gerenciar atalhos para arquivos que são movidos com frequência.

user541686
fonte
No Windows 7, ele simplesmente funciona ... Não é o mesmo no XP?
Soandos 18/05/12
@soandos: Cria uma cópia do atalho em vez de criar um atalho para um atalho.
User541686
@soandos Se você criar um atalho para um atalho, o novo atalho fará referência ao caminho do primeiro atalho, não ao caminho do arquivo de atalho. Este é o comportamento padrão no Windows XP e 7.
iglvzx 18/05/2012

Respostas:

4

Entendo completamente a utilidade de vincular a links e também procurei uma solução fácil. O melhor que eu criei é simplesmente usar Hardlinks, que apontam para o arquivo shortcut.lnk. Eu testei links simbólicos (junções são apenas para pastas, não arquivos, portanto não foram testados) e eles NÃO funcionam (são basicamente arquivos quebrados quando criados, que não abrem).

Os hardlinks têm várias vantagens e desvantagens. A principal desvantagem é que eles são quase impossíveis de fazer backup com facilidade (você precisa de software ou script de terceiros para fazer backup deles em outro mergulho ou mesmo em outro local na mesma unidade). A principal vantagem é que eles são atualizados automaticamente quando você modifica o arquivo original; portanto, a alteração de 1 arquivo de atalho (novo caminho / ícone) também altera todos os links físicos associados [os nomes para o hardlink, no entanto, são únicos, portanto, alterar um nome de arquivo não é possível. mude o nome do hardlink e vice-versa]. Outro recurso que é uma vantagem e uma desvantagem dos hardlinks é que a alteração do ícone / caminho do hardlink (alteração dos dados do hardlink) também altera O ORIGINAL. Isso NÃO inclui 'excluir o próprio link' (o link pode ser excluído como qualquer outro arquivo; sem excluir o arquivo original). Isso é vantajoso porque mantém todos os links associados sincronizados, mas é desvantajoso nos casos em que o hardlink é armazenado em um local vulnerável e seus dados são modificados com códigos maliciosos ou um erro do usuário é modificado pelos dados de um único link. Essa alteração será realizada para todos os parceiros vinculados, incluindo o original. Francamente, esse comportamento é geralmente útil, exceto nos casos em que você deseja uma 'referência de fonte estável' (modificação unidirecional) Essa alteração será realizada para todos os parceiros vinculados, incluindo o original. Francamente, esse comportamento é geralmente útil, exceto nos casos em que você deseja uma 'referência de fonte estável' (modificação unidirecional) Essa alteração será realizada para todos os parceiros vinculados, incluindo o original. Francamente, esse comportamento geralmente é útil, exceto nos casos em que você deseja uma 'referência de fonte estável' (modificação unidirecional)

Testei a cópia de hardlinks e pastas individuais contendo hardlinks, no Windows Explorer, e o resultado apenas cria atalhos dissociados para os dados originais (não são mais hardlinks associados e, portanto, não são alterados com modificações no link original). Acho essa falta de cópia simples extremamente irritante, e a principal razão pela qual eu relutaria em usá-las extensivamente, mas, se você tiver apenas algumas para uma finalidade específica (como sincronizar links de um diretório estável, para a área de trabalho / barra de tarefas) / startmenu) ainda podem ser uma boa solução (apesar de não serem realmente portáveis ​​para outros sistemas, sem escrever um script para automatizar a criação de diretórios). Eles, no entanto, se movimentam sem interromper (você pode movê-los para qualquer lugar do sistema de arquivos, uma vez criados. Você simplesmente não pode 'copiá-los').

Para criar um hardlink, basta abrir um prompt de comando elevado (.cmd aberto para system32 ou executar .cmd como administrador) e digite:

mklink /H [path and name of Hardlink] [location of original file]

Exemplo:

mklink /H C:\users\you\desktop\hardlink.lnk C:\users\you\location\shortcut.lnk

É bom designar o hardlink com o tipo de arquivo ao qual ele vincula (como aqui. eram o original (novamente, um comportamento útil). Também devo declarar diretamente que eles SOMENTE são criados por meio do prompt de comando (ou software de terceiros que fornece uma shellExtension ou GUI para o comando). Além disso, eles não são uma cópia espelhada'do original, eles podem mostrar os tamanhos de arquivo do objeto original, mas ocupam intrinsecamente 0 bytes de espaço na unidade; na verdade, são referências armazenadas na MFT da unidade (que também é a razão pela qual elas não podem ser feitas entre duas partições diferentes [que é outra característica delas que vale a pena mencionar; mas que é facilmente superada com uma combinação inteligente de atalhos, junções) , links simbólicos e hardlinks usados ​​juntos em uníssono])

Francamente, acredito que é exatamente isso que você está procurando e é um recurso muito útil. Se você consegue escrever bem, tenho certeza de que não é difícil escrever um programa que simplesmente crie um diretório de hardlink conforme desejado (e trate-o como uma 'solução de backup' ou 'portabilidade' para outros sistemas). Você também pode encontrar softwares de terceiros para facilitar todas essas tarefas e superar a dificuldade intrínseca de trabalhar com hardlinks.

user612298
fonte
Foi totalmente essa opção. (ainda funciona no Windows Server 2012). Marque como respondido, pois exatamente respondeu à pergunta. Eu uso isso para "versionar" um software compartilhado através da rede e lançado por 15 usuários. Quando tenho uma nova versão, apenas altero o link "primeiro" para apontar para essa nova versão, e o hardLink está respeitando a alteração. O link físico é o link final que reside nas áreas de trabalho dos meus usuários (10 a 15 perfis de usuário).
Simon
Ou ele não funciona no Windows 10 ou eu não entendo o que é um hardlink. Eu segui as instruções exatamente e dizia "Hardlink criado para ...", mas quando clico com o botão direito do mouse no link e visualizo Propriedades, ele ainda aponta para o arquivo original, não para o outro link. Eu até correu fca partir da linha de comando e ele diz que "há diferenças encontradas"
Andrew Steitz
2

A solução mais simples seria usar arquivos em lote .

Se Shortcut.lnkestiver localizado C:\Files\, criar um novo .batarquivo com a seguinte linha de código única iniciará o .lnkarquivo:

"C:\Files\Shortcut.lnk"
iglvzx
fonte
Sim, eu já sabia sobre isso (que é a 'resposta' mencionado em qualquer outro lugar na internet quando você procurar por isso), mas ele realmente não responder à pergunta ...
user541686
Existe uma razão pela qual o "atalho" para o .lnkarquivo também deve ser um .lnkarquivo? Se isso for importante ou se você tiver outros requisitos, edite sua pergunta para incluir esses detalhes. Você obterá uma resposta melhor dessa maneira. :)
iglvzx
Uhm, sim, porque é isso que eu pedi na questão ... se .batarquivos suficiente foram, então, a Microsoft não teria feito .lnkarquivos ...
user541686
E, para sua informação, os arquivos em lote não se comportam como atalhos no momento em que você clica com o botão direito do mouse neles (ou que diabos, eles nem se parecem com atalhos, mesmo quando você os olha ).
User541686
Está bem. Fui adiante e editei sua pergunta para tornar esse requisito mais claro.
Iglvzx