Utilizzo dei percorsi relativi per le scorciatoie di Windows


49

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

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

... e vorrei avere un collegamento in ogni cartella dalle cartelle figlio "Nuovi file", alla cartella figlio "File testati". Ma questa cartella può essere spostata di tanto in tanto, il che interrompe tali collegamenti.

C'è un modo per creare un collegamento relativo a ciascuna cartella? Ricordo di averlo fatto in HTML dove potresti impostare un percorso, qualcosa sulla falsariga di .../Filestornare a un genitore e quindi in una nuova cartella, ma non sono sicuro che si tratti di un supporto sotto le scorciatoie di Windows?

PS: il caso di scorciatoie relativamente simili, quando l'obiettivo è un file, è trattato in https://stackoverflow.com/questions/1169556/making-a-windows-shortcut-start-relative-to-where-the- cartella-è . Nel caso presente, la destinazione è una cartella.


1
Hai provato ../Files, con due punti? Non eseguo Windows ma penso che potrebbe funzionare.
Brian Z,

1
Questa è la prima cosa che ho provato, grazie comunque. :(
Gary Morris,


@ sancho.s - AFAIK, le risposte funzionano solo per l'esecuzione di file .bat. Ciò che è necessario qui è invece un modo per fare riferimento a una cartella.
ToolmakerSteve

@ToolmakerSteve - Immagino che tu abbia controllato / letto "le risposte lì" solo superficialmente. Uno di questi ( stackoverflow.com/a/1751350/2707864 ) è la soluzione accettata qui, quella essendo ca. 4 anni più vecchi. Non l'ho provato. Un altro ( stackoverflow.com/a/29261618/2707864 ) è la seconda metà della soluzione accettata qui. Hai anche commentato quello. Ho provato e funziona. Non è necessario essere scrupolosi per inserire un commento, ma si dovrebbe cercare di non fuorviare i lettori.
sancho.s Ripristina Monica il

Risposte:


50

È possibile utilizzare questa utilità: Relativa .

Fondamentalmente crea un collegamento a "explorer.exe" con il parametro del percorso relativo con un clic destro (allo stesso modo in cui si crea un collegamento normale).

Ovviamente puoi farlo manualmente.
Nel tuo esempio, crei un collegamento in "Nuovi file \ Strumenti" in

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

È possibile utilizzare il solito menu di scelta rapida "Nuovo / Crea collegamento" di Windows per questo e digitando il comando sopra nella casella "Digitare la posizione dell'elemento".


L'ho letto durante le mie ricerche precedenti, ma speravo in una soluzione nativa all'interno di Explorer. Questo sarà il mio piano di backup, evviva.
Gary Morris,

A proposito, questo percorso relativo rimarrà lo stesso anche tra i sistemi? O avrò bisogno di installare Relative se sposto le cartelle / i contenuti tra sistemi diversi?
Gary Morris,

3
"Relativo" crea il collegamento solo usando lo standard "% windir% \ explorer.exe", quindi non è necessario Relativo sul diverso sistema. Sarebbe lo stesso che digitare %windir%\explorer.exeprima del percorso relativo mentre si crea un collegamento standard. Quindi se lo fai manualmente non avrai bisogno di Relative. (Devi solo ricordare il comando prima del tuo percorso relativo)
Rik

Ah scusa, ho frainteso quella parte della tua prima risposta, mia cattiva! Grazie mille!
Gary Morris,

2
La soluzione manuale qui non funziona per me immediatamente. Inoltre, devo cambiare "Start In" da %windir%a vuoto.
notan3xit

30

Una possibile soluzione è utilizzare un file batch di una riga anziché una scorciatoia per aprire ciò che si desidera aprire. Il file batch ti consentirà di utilizzare i relativi percorsi all'interno di se stesso e avrà una directory di lavoro in qualunque cartella si trovi nel file batch.


Un'altra opzione è quella di avviare la scorciatoia cmd.execon qualunque cosa tu stia lanciando, quindi passa qualunque cosa tu stia lanciando come argomento acmd.exe

inserisci qui la descrizione dell'immagine

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

/C fa chiudere la console dopo aver eseguito il comando.


Grazie mille! Questo ha funzionato per me. Ho passato ore a cercare di ottenere il mio collegamento per eseguire uno script power-shell nella stessa directory.
Shervin Shahrdar,

Utile per una situazione diversa, tuttavia la domanda non riguarda l' apertura di alcuni file; si tratta di essere in grado di passare a una cartella specificata in Esplora risorse. C'è un modo per adattare questa risposta per farlo?
ToolmakerSteve

7

Questo trucco funziona:

% COMSPEC% / C inizia "il tuo nome exe senza percorso"

esempio

% COMSPEC% / C avvia winmine.exe


2
Si prega di leggere di nuovo attentamente la domanda. La tua risposta non risponde alla domanda originale.
DavidPostill

1
Per Win10 1607, questa soluzione risponde perfettamente alla domanda del PO, Target: %COMSPEC% /C "start GoogleChromePortable.exe -enableextensions -incognito"Start In: [lasciare vuoto]
semtex41

@ semtex41 Huh? Ci provo, e il risultato è una finestra di dialogo di errore che dice "Windows non riesce a trovare" GoogleChromePortable ". Che cosa ha a che fare con l'obiettivo di OP di navigare in Esplora risorse in una cartella specifica?
ToolmakerSteve,

@ToolmakerSteve bene il titolo è "Utilizzo dei percorsi relativi per le scorciatoie di Windows" e stavo contribuendo a una risposta precedentemente fornita. E l'obiettivo dell'OP è in realtà rendere dinamici i percorsi, rispetto a quelli statici. Quindi, poiché la mia risposta è come ho creato un collegamento che viene eseguito in un percorso non statico, credo che la mia risposta sia adatta.
semtex41,

@ semtex41- L'obiettivo dichiarato di OP è ".. un collegamento .. alla cartella figlio" File testati ". Se non si spiega come avere questa risposta realizzare questo, quindi si prega di chiarire che cosa si stava aggiungendo alla risposta. Sembra che tu abbia appena dato un altro esempio di come eseguire un file .exe. Ma la risposta ha già mostrato un esempio del genere. Quindi, per favore, ribadisci il punto che stavi sollevando?
ToolmakerSteve

6

Sto usando una soluzione simile in un modello che esegue il mio ambiente di sviluppo web (apri la directory di progetto, apri il browser, esegui WAMP, esegui SCSS ...)

inserisci qui la descrizione dell'immagine

Posso passare argomenti al mio script bat e così via, questo è bello. Assicurati di mettere /cargomento dopocmd.exe


2

Puoi usare mklink . Ti consente di creare collegamenti simbolici, collegamenti reali e collegamenti a directory.

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

Se non esiste un accesso elevato, è possibile utilizzare / j

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

Per spostarti nell'intera struttura devi usare il comando xcopy . Ad esempio, se tutta la struttura è sotto il contenitore :

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

inserendo il comando

 copy /b /e container container2

creerà la seguente struttura:

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

L' opzione / b copierà i collegamenti simbolici invece di convertirli in cartelle.


Ma quel collegamento sarà ancora corretto, se il set di cartelle viene spostato in una posizione diversa?
ToolmakerSteve

Ciò richiede privilegi che non ho, anche se sembra che farebbe il lavoro ... Ti dispiacerebbe pubblicare un'immagine delle proprietà dei collegamenti risultanti, una volta creata?
sancho.s Ripristina Monica il

I collegamenti sono davvero corretti. Ciò può essere confermato con il comando "dir". Il problema è che le azioni "copia-incolla", "sposta" e "copia" del File Manager distruggeranno la struttura. Ho modificato la risposta per includere una soluzione alternativa.
Krauss,

1

Una scorciatoia può registrare la sua posizione in una variabile e chiamare un comando usando la variabile. Ad esempio, crea il collegamento "Nonno" con destinazione:

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

Creare il file batch "C: \ Here.bat" con la riga singola:

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

Ora, qualunque sia la cartella di Nonno, quando fai clic su di essa, si apre il genitore della sua cartella genitore. Funziona anche con il nonno in una directory radice.

Il tuo file batch avrebbe potuto usare% HERE% per avviare qualcosa di diverso da explorer.exe. O invece di Here.bat dopo && nella destinazione del collegamento, è possibile chiamare un programma che utilizza% HERE%.

Sul mio sistema il nonno sembra funzionare con & o &&.


1
&&esegue la chiamata successiva solo se la chiamata precedente non ha restituito un errore, mentre &non è importante. In questo caso, non ci dovrebbero essere differenze.
leewz,


0

È possibile creare una variabile di ambiente che contiene il percorso (relativo) alla cartella di destinazione o una cartella sopra di essa nella struttura del file system.

Esempio:

  • Variabile d'ambiente:

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

  • Target scorciatoia:

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

È possibile utilizzare il comando DOS SETX per creare variabili di ambiente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.