Utilisation de chemins relatifs pour les raccourcis Windows

49

J'ai un schéma de dossier du type (version hautement simplifiée):

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

... et j'aimerais avoir un raccourci dans chaque dossier des dossiers enfants "Nouveaux fichiers" vers le dossier enfant "Fichiers testés". Mais ce dossier peut être déplacé de temps en temps, ce qui romprait ces raccourcis.

Est-il possible de créer un raccourci relatif vers chaque dossier? Je me souviens d’avoir fait cela en HTML, où vous pouviez définir un chemin, comme .../Filesretourner à un parent, puis dans un nouveau dossier, mais je ne suis pas sûr qu’il s’agisse d’une prise en charge sous des raccourcis Windows?

PS: Le cas de raccourcis relatifs similaires, lorsque la cible est un fichier, est traité dans https://stackoverflow.com/questions/1169556/making-a-windows-shortcut-start-relative-to-where-the- dossier-est . Dans le cas présent, la cible est un dossier.

Gary Morris
la source
1
Avez-vous essayé ../Files, avec deux points? Je ne suis pas sous Windows mais je pense que cela peut fonctionner.
Brian Z
1
C'est la première chose que j'ai essayée, merci quand même. :(
Gary Morris
stackoverflow.com/q/1169556/2707864
sancho.s Rétablir Monica
@ sancho.s - autant que je sache, les réponses ne fonctionnent que pour l'exécution de fichiers .bat. Ce qu'il faut ici, c'est un moyen de faire référence à un dossier.
ToolmakerSteve
@ToolmakerSteve - Je suppose que vous avez coché / lu "les réponses ici" seulement superficiellement. L'un d'eux ( stackoverflow.com/a/1751350/2707864 ) est la solution acceptée ici, celle-ci étant d'environ. 4 ans de plus. Je ne l'ai pas essayé. Une autre solution ( stackoverflow.com/a/29261618/2707864 ) constitue la seconde moitié de la solution acceptée ici. Vous avez même commenté celui-là. Je l'ai essayé et il fonctionne. Il n'est pas nécessaire d'être minutieux pour placer un commentaire, mais il faut essayer de ne pas induire en erreur les lecteurs.
Réinsérez Monica

Réponses:

50

Vous pouvez utiliser cet utilitaire: Relatif .

Il crée fondamentalement un raccourci vers "explorer.exe" avec le paramètre de votre chemin relatif avec un clic droit (de la même manière que vous créez un raccourci normal).

Bien sûr, vous pouvez le faire manuellement.
Dans votre exemple, vous créez un raccourci dans "Nouveaux fichiers \ Outils" pour

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

Vous pouvez utiliser le menu contextuel habituel "Nouveau / Créer un raccourci" de Windows pour cela et taper la commande ci-dessus dans la boîte "Tapez l'emplacement de l'élément".

Rik
la source
J'avais lu des informations à ce sujet lors de mes recherches précédentes, mais j'espérais une solution native dans Explorer. Ce sera mon plan de secours cependant, à la vôtre.
Gary Morris
À propos, ce chemin relatif restera-t-il le même entre les systèmes? Ou devrai-je installer Relative si je déplace les dossiers / contenus entre différents systèmes?
Gary Morris
3
"Relative" crée uniquement le raccourci en utilisant le standard "% windir% \ explorer.exe", vous n'avez donc pas besoin de Relative sur un autre système. Ce serait la même chose que de taper %windir%\explorer.exeavant le chemin relatif en créant un raccourci standard. Donc, si vous faites cela manuellement, vous n'aurez plus besoin de Relative. (Vous devez juste vous rappeler la commande avant votre chemin relatif)
Rik
Ah, pardon, j'ai mal compris cette partie de votre première réponse, ma mauvaise! Merci beaucoup!
Gary Morris
2
La solution manuelle ici ne fonctionne pas pour moi hors de la boîte. De plus, je dois changer "Start In" de %windir%vide.
notan3xit
30

Une solution possible consiste à utiliser un fichier de commandes d'une ligne au lieu d'un raccourci pour ouvrir ce que vous voulez ouvrir. Le fichier de commandes vous permettra d'utiliser des chemins relatifs à l'intérieur de lui-même et aura un répertoire de travail contenant le dossier dans lequel le fichier de commandes est placé.


Une autre option est de faire démarrer votre raccourci à la cmd.exeplace de ce que vous lancez, puis de passer ce que vous lancez comme argument àcmd.exe

entrez la description de l'image ici

%COMSPEC%est une variable d'environnement pointe par défaut sur l'invite de commande .

/C provoque la fermeture de la console après l’exécution de la commande.

Scott Chamberlain
la source
Merci beaucoup! Cela a fonctionné pour moi. J'ai passé des heures à essayer d'obtenir mon raccourci pour exécuter un script power-shell dans le même répertoire.
Shervin Shahrdar
Utile dans une situation différente, cependant la question n'est pas d' ouvrir un fichier; il s'agit de pouvoir accéder à un dossier spécifié dans l'Explorateur Windows. Y a-t-il un moyen d'adapter cette réponse pour le faire?
ToolmakerSteve
7

Cette astuce fonctionne:

% COMSPEC% / C commence "votre nom exe sans chemin"

Exemple

% COMSPEC% / C start winmine.exe

Alexis PERROTTEY
la source
2
Veuillez relire attentivement la question. Votre réponse ne répond pas à la question initiale.
DavidPostill
1
Pour Win10 1607, cette solution répond parfaitement à la question du PO, Cible: %COMSPEC% /C "start GoogleChromePortable.exe -enableextensions -incognito"Démarrer dans: [laisser en blanc]
semtex41 le
@ semtex41 Hein? J'essaie cela, et le résultat est une boîte de dialogue d'erreur disant "Windows ne peut pas trouver 'GoogleChromePortable'. Qu'est-ce que cela a à voir avec l'objectif d'OP de naviguer dans l'Explorateur Windows vers un dossier spécifié?
ToolmakerSteve
@ToolmakerSteve et le titre est "Utilisation des chemins relatifs pour les raccourcis Windows" et je contribuais à une réponse fournie précédemment. Et l'objectif de l'OP est en réalité de rendre les chemins dynamiques, vs statiques. Donc, puisque ma réponse est la façon dont j'ai créé un raccourci qui s'exécute de manière non statique, je pense que ma réponse convient.
semtex41
L'objectif déclaré de @ semtex41- OP est ".. un raccourci .. vers le dossier enfant" Fichiers testés "". Si vous n'êtes pas en train d' expliquer comment cette réponse accomplir cela, alors s'il vous plaît préciser ce que vous étiez ajouterez à la réponse. Il semble que vous veniez de donner un autre exemple sur la façon d'exécuter un fichier .exe. Mais la réponse montrait déjà un tel exemple. Alors s'il vous plaît ré-énoncez le point que vous faisiez?
ToolmakerSteve
6

J'utilise une solution similaire dans un modèle qui exécute mon environnement de développement Web (répertoire de projet ouvert, navigateur ouvert, exécution de WAMP, exécution de SCSS, etc.)

entrez la description de l'image ici

Je peux passer des arguments à mon script de batte, etc., c'est cool. Assurez-vous de mettre /cargument aprèscmd.exe

Hrvoje Golcic
la source
2

Vous pouvez utiliser mklink . Il vous permet de créer des liens symboliques, des liens durs et des liens de répertoire.

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

S'il n'y a pas d'accès surélevé, vous pouvez utiliser / j

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

Pour vous déplacer dans toute la structure, utilisez la commande xcopy . Par exemple, si toute la structure est sous conteneur :

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

entrer la commande

 copy /b /e container container2

créera la structure suivante:

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

Le commutateur / b copiera les liens symboliques au lieu de les convertir en dossiers.

Krauss
la source
Mais ce lien sera-t-il toujours correct si l'ensemble de dossiers est déplacé vers un emplacement différent?
ToolmakerSteve
Cela nécessite des privilèges que je n'ai pas, bien qu'il semble que cela ferait l'affaire. Souhaitez-vous afficher une image des propriétés de raccourci obtenues, une fois qu'il a été créé?
Réinsérez Monica
Les liens sont en effet corrects. Cela peut être confirmé avec la commande "dir". Le problème est que les actions "copier-coller", "déplacer" et "copier" du gestionnaire de fichiers vont détruire la structure. J'ai modifié la réponse pour inclure une solution de contournement.
Krauss
1

Un raccourci peut enregistrer son emplacement dans une variable et appeler une commande à l'aide de la variable. Par exemple, créez le raccourci "Grand-parent" avec la cible:

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

Créez le fichier de commandes "C: \ Here.bat" en une seule ligne:

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

Quel que soit le dossier dans lequel se trouve le grand-parent, lorsque vous cliquez dessus, le dossier parent de son dossier parent s'ouvre. Cela fonctionne même avec Grandparent dans un répertoire racine.

Votre fichier de commandes aurait pu utiliser% HERE% pour démarrer autre chose que explorer.exe. Ou au lieu de Here.bat après le && dans la cible de raccourci, vous pouvez appeler un programme utilisant% HERE%.

Sur mon système, grand-parent semble fonctionner avec & ou &&.

mudr
la source
1
&&effectue l'appel suivant uniquement si l'appel précédent n'a pas renvoyé d'erreur alors &qu'il s'en fiche. Dans ce cas, il ne devrait y avoir aucune différence.
leewz
1

Si vous laissez la zone 'Start In'vide dans les propriétés du raccourci, les liens seront relatifs au répertoire de travail en cours.

Voir aussi https://stackoverflow.com/a/17951772/40961

David d C e Freitas
la source
Comment cela aide-t-il l'objectif d'OP de naviguer dans l'Explorateur Windows vers un dossier spécifié?
ToolmakerSteve
Si vous aviez le problème, la solution est logique ... comment votre commentaire aide-t-il à chaque réponse?
David d C e Freitas
0

Vous pouvez créer une variable d'environnement contenant le chemin (relatif) du dossier cible ou un dossier situé au-dessus de celui-ci dans la structure du système de fichiers.

Exemple:

  • Variable d'environnement:

    % Dropbox% = "C: \ Utilisateurs \ Utilisateur 1 \ Dropbox"

  • Cible raccourci:

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

Vous pouvez utiliser la commande DOS SETX pour créer des variables d’environnement.

gmoises
la source