2013-09-12 14:49:06 +0000 2013-09-12 14:49:06 +0000
53
53

Usare i percorsi relativi per i collegamenti di Windows

Ho uno schema di cartelle come (versione altamente semplificata):

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

… e vorrei avere una scorciatoia in ogni cartella dalla cartella figlia “New Files”, alla cartella figlia “Tested Files”. Ma questa cartella può essere spostata di tanto in tanto, il che romperebbe i suddetti collegamenti.

C'è un modo per creare un collegamento relativo ad ogni cartella? Ricordo di averlo fatto in HTML dove si poteva impostare un percorso, qualcosa sulla falsariga di .../Files per tornare a un genitore e poi in una nuova cartella, ma non sono sicuro che questo sia qualcosa di supporto nelle scorciatoie di Windows?

PS: Il caso di scorciatoie analogamente relative, quando la destinazione è un file, è trattato in https://stackoverflow.com/questions/1169556/making-a-windows-shortcut-start-relative-to-where-the-folder-is . In questo caso la destinazione è una cartella.

Risposte (8)

53
53
53
2013-09-12 15:08:36 +0000

Potete usare questa utility: Relative .

In pratica crea un collegamento a “explorer.exe” con il parametro del tuo percorso relativo con un clic destro (nello stesso modo in cui crei un collegamento normale).

Naturalmente puoi farlo manualmente.
Nel tuo esempio creeresti un collegamento in “New Files\Tools” a

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

Puoi usare il solito menu contestuale “New/Create shortcut” di Windows per questo e digitare il comando sopra nella casella “Type the location of the item”.

31
31
31
2013-09-12 15:45:43 +0000

Una possibile soluzione è usare un file batch di una riga invece di una scorciatoia per aprire qualsiasi cosa si voglia aprire. Il file batch vi permetterà di usare percorsi relativi al suo interno e avrà una directory di lavoro di qualsiasi cartella in cui il file batch è collocato.


Un'altra opzione è quella di far partire la tua scorciatoia cmd.exe invece di qualsiasi cosa tu stia lanciando e poi passare qualsiasi cosa tu stia lanciando come argomento a cmd.exe

%COMSPEC% è una variabile di ambiente che punta al prompt dei comandi per default .

/C fa sì che la console si chiuda da sola dopo aver eseguito il comando.

7
7
7
2014-05-12 01:21:58 +0000

Sto usando una soluzione simile in un modello che esegue il mio ambiente di sviluppo web (aprire la directory del progetto, aprire il browser, eseguire WAMP, eseguire SCSS…)

Posso passare argomenti al mio script bat e ecc, questo è forte. Assicurati di mettere l'argomento /c dopo cmd.exe

6
6
6
2016-08-18 16:47:41 +0000

Questo trucco funziona:

%COMSPEC% /C start“il tuo nome exe senza percorso”

esempio

%COMSPEC% /C start winmine.exe

4
4
4
2016-08-30 08:19:38 +0000

Potete usare mklink . Permette di creare collegamenti simbolici, hard link e collegamenti di directory.

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

Se non c'è un accesso elevato, puoi usare /j

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

Per spostarti all'interno dell'intera struttura dovresti usare il comando xcopy. Per esempio, se tutta la struttura è sotto contenitore :

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

inserendo il comando

xcopy /b /e container container2

si crea la seguente struttura:

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

Lo switch /b copierà i link simbolici invece di convertirli in cartelle. (Nota che /b ha un significato completamente diverso per il comando copy)

1
1
1
2015-09-26 02:33:10 +0000

Una scorciatoia può registrare la sua posizione in una variabile e chiamare un comando usando la variabile. Per esempio, create la scorciatoia “Grandparent” con destinazione:

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

Create il file batch “C:\Here.bat” con la singola linea:

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

Ora, in qualsiasi cartella si trovi Grandparent, quando lo cliccate, si apre il genitore della sua cartella madre. Funziona anche con Grandparent in una directory principale.

Il tuo file batch potrebbe aver usato %HERE% per avviare qualcosa di diverso da explorer.exe. O invece di Here.bat dopo la && nell'obiettivo del collegamento, potresti chiamare un programma che fa uso di %HERE%.

Sul mio sistema Grandparent sembra funzionare con & o &&.

1
1
1
2016-01-01 08:42:40 +0000

Se lasciate la casella 'Start In' vuota nelle proprietà della scorciatoia, i collegamenti saranno relativi alla directory di lavoro corrente.

Vedi anche https://stackoverflow.com/a/17951772/40961

0
0
0
2019-06-20 16:48:10 +0000

Potete creare una variabile d'ambiente che contenga il percorso (relativo) alla cartella di destinazione o una cartella sopra di essa nella struttura del file system.

Esempio:

  • Variabile d'ambiente:

  • Destinazione scorciatoia:

Potete usare il comando DOS SETX per creare variabili d'ambiente.