Uso de rutas relativas para accesos directos de Windows

49

Tengo un esquema de carpeta como (versión altamente simplificada):

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

... y me gustaría tener un acceso directo en cada carpeta desde las carpetas secundarias "Nuevos archivos" a la carpeta secundaria "Archivos probados". Pero esta carpeta se puede mover de vez en cuando, lo que rompería dichos accesos directos.

¿Hay alguna manera de hacer un acceso directo relativo a cada carpeta? Recuerdo haber hecho esto en HTML donde podría establecer una ruta, algo así .../Filescomo volver a un padre y luego a una nueva carpeta, pero no estoy seguro de si esto es algo compatible con los accesos directos de Windows.

PD: El caso de los accesos directos relativos similares, cuando el destino es un archivo, se trata en https://stackoverflow.com/questions/1169556/making-a-windows-shortcut-start-relative-to-where-the- carpeta-es . En el presente caso, el objetivo es una carpeta.

Gary Morris
fuente
1
¿Lo intentaste ../Filescon dos puntos? No estoy ejecutando Windows, pero creo que puede funcionar.
Brian Z
1
Eso es lo primero que probé, gracias. :(
Gary Morris
stackoverflow.com/q/1169556/2707864
sancho.s Restablecer Mónica
@ sancho.s - AFAIK, las respuestas solo funcionan para ejecutar archivos .bat. Lo que se necesita aquí es una forma de referirse a una carpeta.
ToolmakerSteve
@ToolmakerSteve - Supongo que marcó / leyó "las respuestas allí" solo superficialmente. Una de ellas ( stackoverflow.com/a/1751350/2707864 ) es la solución aceptada aquí, que es ca. 4 años mayor. No lo intenté. Otra ( stackoverflow.com/a/29261618/2707864 ) es la segunda mitad de la solución aceptada aquí. Incluso comentaste sobre eso. Lo probé y funciona. No es necesario ser minucioso para hacer un comentario, pero uno debe tratar de no engañar a los lectores.
sancho.s Restablece a Mónica el

Respuestas:

50

Puede usar esta utilidad: Relativo .

Básicamente crea un acceso directo a "explorer.exe" con el parámetro de su ruta relativa con un clic derecho (de la misma manera que crea un acceso directo normal).

Por supuesto que puedes hacer esto manualmente.
En su ejemplo, crearía un acceso directo en "Nuevos archivos \ Herramientas" para

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

Puede usar el menú contextual habitual "Nuevo / Crear acceso directo" de Windows para esto y escribir el comando anterior en el cuadro "Escriba la ubicación del elemento".

Rik
fuente
Leí sobre eso durante mi investigación anterior, pero esperaba una solución nativa dentro de Explorer. Sin embargo, este será mi plan de respaldo.
Gary Morris
Por cierto, ¿este camino relativo se mantendrá igual entre los sistemas también? ¿O tendré que instalar Relative si muevo las carpetas / contenidos entre diferentes sistemas?
Gary Morris
3
"Relativo" solo hace el acceso directo utilizando el estándar "% windir% \ explorer.exe", por lo que no necesita Relativo en el sistema diferente. Sería lo mismo que escribir %windir%\explorer.exeantes de la ruta relativa al hacer un acceso directo estándar. Entonces, si hace esto manualmente, no necesitará Relativo en absoluto. (Solo necesita recordar el comando antes de su ruta relativa)
Rik
Ah, lo siento, entendí mal esa parte de tu primera respuesta, ¡mal! ¡Muchas gracias!
Gary Morris
2
La solución manual aquí no me funciona fuera de la caja. Además, tengo que cambiar "Iniciar en" de %windir%vacío.
notan3xit
30

Una posible solución es usar un archivo por lotes de una línea en lugar de un atajo para abrir lo que quiera abrir. El archivo por lotes le permitirá usar rutas relativas dentro de sí mismo y tendrá un directorio de trabajo de cualquier carpeta en la que se coloque el archivo por lotes.


Otra opción es iniciar su acceso directo cmd.execon lo que esté iniciando y luego pasar lo que sea que esté iniciando como argumento paracmd.exe

ingrese la descripción de la imagen aquí

%COMSPEC%es una variable de entorno que apunta al símbolo del sistema de manera predeterminada .

/C hace que la consola se cierre después de ejecutar el comando.

Scott Chamberlain
fuente
¡Muchas gracias! Esto funcionó para mí. Pasé horas intentando que mi acceso directo ejecutara un script de Power-Shell en el mismo directorio.
Shervin Shahrdar
Útil para una situación diferente, sin embargo, la pregunta no es acerca de abrir algún archivo; se trata de poder saltar a una carpeta específica dentro del Explorador de Windows. ¿Hay alguna manera de adaptar esta respuesta para hacerlo?
ToolmakerSteve
7

Este truco funciona:

% COMSPEC% / C comienza "su nombre de exe sin ruta"

ejemplo

% COMSPEC% / C start winmine.exe

Alexis PERROTTEY
fuente
2
Por favor lea la pregunta otra vez cuidadosamente. Su respuesta no responde a la pregunta original.
DavidPostill
1
Para Win10 1607, esta solución responde perfectamente a la pregunta del OP, Target: %COMSPEC% /C "start GoogleChromePortable.exe -enableextensions -incognito"Start In: [dejar en blanco]
semtex41
@ semtex41 ¿Eh? Intento eso, y el resultado es un cuadro de diálogo de error que dice "Windows no puede encontrar 'GoogleChromePortable'. ¿Qué tiene que ver eso con el objetivo de OP de navegar el Explorador de Windows a una carpeta específica?
ToolmakerSteve
@ToolmakerSteve bien, el título es "Uso de rutas relativas para los accesos directos de Windows" y estaba contribuyendo a una respuesta proporcionada anteriormente. Y el objetivo del OP es en realidad hacer que los caminos sean dinámicos, frente a estáticos. Entonces, dado que mi respuesta es cómo creé un acceso directo que se ejecuta en una ruta no estática, creo que mi respuesta encaja.
semtex41
@ semtex41- El objetivo declarado de OP es "... un acceso directo ... a la carpeta secundaria" Archivos probados ". Si no está explicando cómo lograr que esta respuesta lo logre, entonces aclare lo que estaba agregando a la respuesta. Parece que acabas de dar otro ejemplo de cómo ejecutar un archivo .exe. Pero la respuesta ya mostró ese ejemplo. Entonces, ¿por favor, repite el punto que estabas haciendo?
ToolmakerSteve
6

Estoy usando una solución similar en una plantilla que ejecuta mi entorno de desarrollo web (abrir el directorio del proyecto, abrir el navegador, ejecutar WAMP, ejecutar SCSS ...)

ingrese la descripción de la imagen aquí

Puedo pasar argumentos a mi script de murciélago y etc., esto es genial. Asegúrate de poner /cargumento despuéscmd.exe

Hrvoje Golcic
fuente
2

Puedes usar mklink . Le permite crear enlaces simbólicos, enlaces duros y enlaces de directorio.

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

Si no hay acceso elevado, puede usar / j

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

Para moverse por toda la estructura, debe usar el comando xcopy . Por ejemplo, si toda la estructura está debajo del contenedor :

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

ingresando el comando

 copy /b /e container container2

creará la siguiente estructura:

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

El modificador / b copiará los enlaces simbólicos en lugar de convertirlos en carpetas.

Krauss
fuente
Pero, ¿ese vínculo seguirá siendo correcto si el conjunto de carpetas se mueve a una ubicación diferente?
ToolmakerSteve
Esto requiere privilegios que no tengo, aunque parece que haría el trabajo ... ¿Te importaría publicar una imagen de las propiedades de acceso directo resultantes, una vez que se creó?
sancho.s Restablece a Monica el
Los enlaces son de hecho correctos. Eso se puede confirmar con el comando "dir". El problema es que las acciones "copiar-pegar", "mover" y "copiar" del Administrador de archivos destruirán la estructura. He modificado la respuesta para incluir una solución alternativa.
Krauss
1

Un acceso directo puede registrar su ubicación en una variable y llamar a un comando usando la variable. Por ejemplo, cree el acceso directo "Abuelo" con destino:

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

Cree el archivo por lotes "C: \ Here.bat" con la línea única:

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

Ahora, cualquiera que sea la carpeta en la que se encuentre Grandparent, al hacer clic en ella, se abre el padre de su carpeta principal. Incluso funciona con Grandparent en un directorio raíz.

Su archivo por lotes podría haber utilizado% AQUÍ% al iniciar algo distinto de explorer.exe. O en lugar de Here.bat después de && en el objetivo de acceso directo, puede llamar a un programa que utilice% HERE%.

En mi sistema, Grandparent parece funcionar con & o &&.

mudr
fuente
1
&&solo realiza la siguiente llamada si la llamada anterior no devolvió un error, aunque &no le importa. En este caso, no debería haber diferencia.
leewz
1

Si deja el 'Start In'cuadro vacío en las propiedades del acceso directo, los enlaces serán relativos al directorio de trabajo actual.

Ver también https://stackoverflow.com/a/17951772/40961

David d C e Freitas
fuente
¿Cómo ayuda esto al objetivo de OP de navegar el Explorador de Windows a una carpeta específica?
ToolmakerSteve
Si tuvo el problema, entonces la solución tiene sentido ... ¿cómo ayuda su comentario en cada respuesta?
David d C e Freitas
0

Puede crear una variable de entorno que contenga la ruta de acceso (relativa) a la carpeta de destino o una carpeta sobre ella en la estructura del sistema de archivos.

Ejemplo:

  • Variable ambiental:

    % Dropbox% = "C: \ Users \ User 1 \ Dropbox"

  • Objetivo de acceso directo:

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

Puede usar el comando SETX de DOS para crear variables de entorno.

gmoises
fuente