Usando caminhos relativos para atalhos do Windows

49

Eu tenho um esquema de pastas como (versão altamente simplificada):

New Files
 >Tools
 >Scripts
Tested Files
 >Tools
 >Scripts

... e gostaria de ter um atalho em cada pasta, desde as pastas filho "Novos arquivos" até a pasta filho "Arquivos testados". Mas essa pasta pode ser movida de tempos em tempos, o que quebraria os atalhos.

Existe uma maneira de criar um atalho relativo para cada pasta? Lembro-me de fazer isso em HTML, onde você pode definir um caminho, algo .../Filescomo voltar para um pai e depois para uma nova pasta, mas não tenho certeza se isso é algo compatível com os atalhos do Windows?

PS: O caso de atalhos igualmente relativos, quando o destino é um arquivo, é tratado em https://stackoverflow.com/questions/1169556/making-a-windows-shortcut-start-relative-to-where-the- pasta é . No presente caso, o destino é uma pasta.

Gary Morris
fonte
1
Você tentou ../Files, com dois pontos? Não estou executando o Windows, mas acho que pode funcionar.
Brian Z
1
Essa é a primeira coisa que tentei, apesar de tudo. :(
Gary Morris
stackoverflow.com/q/1169556/2707864
sancho.s Reinstala Monica
@ sancho.s - AFAIK, as respostas lá funcionam apenas para a execução de arquivos .bat. O que é necessário aqui é uma maneira de se referir a uma pasta.
Home
@ ToolmakerSteve - Eu acho que você verificou / leu "as respostas lá" apenas superficialmente. Um deles ( stackoverflow.com/a/1751350/2707864 ) é a solução aceita aqui, sendo um deles ca. 4 anos mais velho. Eu não tentei. Outro ( stackoverflow.com/a/29261618/2707864 ) é a segunda metade da solução aceita aqui. Você até comentou sobre isso. Eu tentei e funciona. Não é necessário ser cuidadoso ao colocar um comentário, mas deve-se tentar não enganar os leitores.
sancho.s Reintegrar Monica

Respostas:

50

Você pode usar este utilitário: Relativo .

Ele basicamente cria um atalho para "explorer.exe" com o parâmetro do seu caminho relativo com um clique direito (da mesma maneira que você cria um atalho normal).

Claro que você pode fazer isso manualmente.
No seu exemplo, você criaria um atalho em "Novos arquivos \ Ferramentas" para

%windir%\explorer.exe "..\..\Tested Files\Tools"

Você pode usar o menu de contexto usual "Novo / Criar atalho" do Windows para isso e digitar o comando acima na caixa "Digite o local do item".

Rik
fonte
Eu li sobre isso durante minha pesquisa anterior, mas esperava uma solução nativa no Explorer. Este será o meu plano de backup, felicidades.
Gary Morris
A propósito, esse caminho relativo permanecerá o mesmo entre os sistemas também? Ou precisarei instalar o Relative se mover as pastas / conteúdos entre sistemas diferentes?
Gary Morris
3
"Relative" apenas cria o atalho usando o padrão "% windir% \ explorer.exe", para que você não precise do Relative no sistema diferente. Seria o mesmo que digitar %windir%\explorer.exeantes do caminho relativo ao criar um atalho padrão. Portanto, se você fizer isso manualmente, não precisará do Relative. (Você só precisa se lembrar o comando antes de seu caminho relativo)
Rik
Desculpe, entendi mal essa parte da sua primeira resposta, meu mal! Muito obrigado!
Gary Morris
2
A solução manual aqui não funciona para mim imediatamente. Além disso, eu tenho que mudar "Start In" de %windir%para vazio.
Notan3xit
30

Uma solução possível é usar um arquivo em lotes de uma linha em vez de um atalho para abrir o que você deseja abrir. O arquivo em lotes permitirá que você use caminhos relativos dentro de si e terá um diretório de trabalho de qualquer pasta em que o arquivo em lotes seja colocado.


Outra opção é iniciar o atalho, em cmd.exevez disso, com o que você estiver iniciando e depois passar o que você está iniciando como argumento paracmd.exe

insira a descrição da imagem aqui

%COMSPEC%é uma variável de ambiente que aponta para o prompt de comando por padrão .

/C faz com que o console se feche após a execução do comando.

Scott Chamberlain
fonte
Muito obrigado! Isso funcionou para mim. Passei horas tentando fazer com que meu atalho execute um script power-shell no mesmo diretório.
Shervin Shahrdar
Útil para uma situação diferente, no entanto, a questão não é abrir um arquivo; trata-se de poder pular para uma pasta especificada no Windows Explorer. Existe uma maneira de adaptar esta resposta para fazer isso?
Home
7

Esse truque funciona:

% COMSPEC% / C inicia "seu nome exe sem caminho"

exemplo

% COMSPEC% / C inicia o winmine.exe

Alexis PERROTTEY
fonte
2
Por favor, leia a pergunta novamente com atenção. Sua resposta não responde à pergunta original.
DavidPostill
1
Para o Win10 1607, esta solução responde perfeitamente à pergunta do OP, Alvo: %COMSPEC% /C "start GoogleChromePortable.exe -enableextensions -incognito"Iniciar em: [deixe em branco]
semtex41 4/17/17
@ semtex41 Hein? Eu tento isso, e o resultado é uma caixa de diálogo de erro dizendo "O Windows não consegue encontrar 'GoogleChromePortable'. O que isso tem a ver com o objetivo do OP de navegar no Windows Explorer para uma pasta especificada? '
ToolmakerSteve
@ToolmakerSteve bem, o título é "Usando caminhos relativos para atalhos do Windows" e eu estava contribuindo para uma resposta fornecida anteriormente. E o objetivo do OP é realmente tornar os caminhos dinâmicos versus estáticos. Portanto, como minha resposta é como eu criei um atalho que é executado em um caminho não estático, acredito que minha resposta se encaixa.
semtex41
@ semtex41- O objetivo declarado do OP é ".. um atalho .. para a pasta filho" Arquivos testados "". Se você não está explicando como fazer com que essa resposta seja possível, esclareça o que estava adicionando à resposta. Parece que você acabou de dar outro exemplo de como executar um arquivo .exe. Mas a resposta já mostrou esse exemplo. Então, por favor, indique novamente o que você estava fazendo?
Home
6

Estou usando uma solução semelhante em um modelo que executa meu ambiente de desenvolvimento web (diretório de projeto aberto, navegador aberto, WAMP, SCSS ...)

insira a descrição da imagem aqui

Eu posso passar argumentos para o meu script de morcego e etc., isso é legal. Certifique-se de colocar o /cargumento depoiscmd.exe

Hrvoje Golcic
fonte
2

Você pode usar o mklink . Permite criar links simbólicos, hard links e links de diretório.

 mklink /d Tools "..\Tested Files\Tools"  (elevated command prompt)

Se não houver acesso elevado, você pode usar / j

 mklink /j Tools "..\Tested Files\Tools"

Para percorrer toda a estrutura, você deve usar o comando xcopy . Por exemplo, se toda a estrutura estiver em contêiner :

container
   New Files
      <SYMLINKD> Scripts [..\Tested Files\Scripts]
      <SYMLINKD> Tools  [ ..\Tested Files\Tools]
   Tested Files    
      Scripts
      Tools

digitando o comando

 copy /b /e container container2

criará a seguinte estrutura:

container2
   New Files
      <SYMLINKD> Scripts [..\Tested Files\Scripts]
      <SYMLINKD> Tools  [ ..\Tested Files\Tools]
   Tested Files    
      Scripts
      Tools

A opção / b copiará os links simbólicos em vez de convertê-los em pastas.

Krauss
fonte
Mas esse link ainda estará correto se o conjunto de pastas for movido para um local diferente?
Home
Isso requer privilégios que não tenho, embora pareça que faria o trabalho ... Você se importaria de postar uma imagem das propriedades de atalho resultantes, uma vez criada?
sancho.s Reinstala Monica
Os links estão realmente corretos. Isso pode ser confirmado com o comando "dir". O problema é que as ações "copiar e colar", "mover" e "copiar" do Gerenciador de Arquivos destruirão a estrutura. Modifiquei a resposta para incluir uma solução alternativa.
Krauss
1

Um atalho pode registrar sua localização em uma variável e chamar um comando usando a variável Por exemplo, crie o atalho "Avô" com o destino:

%windir%\system32\cmd.exe /c set HERE="%CD%" && "C:\Here.bat"

Crie o arquivo em lotes "C: \ Here.bat" com a linha única:

@%windir%\explorer.exe /n,/select, %HERE%

Agora, seja qual for a pasta em que o Grandparent esteja, quando você clicar nela, o pai da pasta pai será aberto. Até funciona com o Grandparent em um diretório raiz.

Seu arquivo em lotes poderia ter usado% HERE% ao iniciar algo diferente de explorer.exe. Ou, em vez de Here.bat após o && no destino do atalho, você pode chamar um programa que use% HERE%.

No meu sistema, o Avô parece trabalhar com & ou &&.

mudr
fonte
1
&&só executa a próxima chamada se a chamada anterior não retornou um erro, enquanto &não se importa. Nesse caso, não deve haver diferença.
leewz
1

Se você deixar a 'Start In'caixa vazia nas propriedades do atalho, os links serão relativos ao diretório de trabalho atual.

Consulte também https://stackoverflow.com/a/17951772/40961

David d C e Freitas
fonte
Como isso ajuda o objetivo do OP de navegar no Windows Explorer para uma pasta especificada?
Home
Se você teve o problema, a solução faz sentido ... como o seu comentário ajuda em todas as respostas?
David d C e Freitas
0

Você pode criar uma variável de ambiente que contenha o caminho (relativo) para a pasta de destino ou uma pasta acima dela na estrutura do sistema de arquivos.

Exemplo:

  • Variável de ambiente:

    % Dropbox% = "C: \ Usuários \ Usuário 1 \ Dropbox"

  • Alvo de atalho:

    "% Dropbox% \ Install \ Utilities \ File.exe"

Você pode usar o comando SETX do DOS para criar variáveis ​​de ambiente.

gmoises
fonte