web-dev-qa-db-fra.com

Utilisation de chemins relatifs pour les raccourcis Windows

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, dans lequel vous pouviez définir un chemin, comme .../Files, pour retourner à 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- le-dossier-est . Dans le cas présent, la cible est un dossier.

46
Gary Morris

Vous pouvez utiliser cet utilitaire: Relatif .

Il crée essentiellement 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"

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

48
Rik

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 que votre raccourci démarre cmd.exe à la place de ce que vous lancez, puis transmettez ce que vous lancez comme argument à cmd.exe

enter image description here

%COMSPEC% est une variable d'environnement point à la commande Invite par défaut .

/C provoque la fermeture de la console après avoir exécuté la commande.

28
Scott Chamberlain

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.)

enter image description here

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

6
Hrvoje Golcic

Cette astuce fonctionne:

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

exemple

% COMSPEC%/C start winmine.exe

5
Alexis PERROTTEY

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 copie les liens symboliques au lieu de les convertir en dossiers.

2
Krauss

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

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 &&.

1
mudr