Come posso creare un collegamento simbolico in Windows?


113

Windows Vista ha aggiunto la possibilità di creare collegamenti simbolici a file e directory. Come faccio a creare un collegamento simbolico e quali sono le attuali versioni consumer e server di Windows che lo supportano?


6
Qualcuno può evidenziare le differenze tra un collegamento simbolico e un collegamento?
tomjedrz,

1
@tomjedrz: se si utilizza un collegamento, qualsiasi API per aprire tale collegamento aprirà un file di testo che contiene il percorso del file / cartella di destinazione. se si utilizzano collegamenti, qualsiasi API per aprire quel collegamento aprirà il file / la cartella di destinazione.
Afriza N. Arief,

2
Contrariamente a quanto tutti hanno detto, mi confermano che è possibile utilizzare i collegamenti simbolici in Windows XP . (Lo uso per installare il database Picasa sulla cartella condivisa VM). Dai un'occhiata a schinagl.priv.at/nt/hardlinkshellext/hardlinkshellext.html e vai alla sezione "Collegamenti simbolici per Windows XP". HTH
Adam Ryczkowski,

Risposte:


109

È possibile creare un collegamento simbolico con l'utilità della riga di comando mklink.

MKLINK [[/D] | [/H] | [/J]] Link Target

        /D      Creates a directory symbolic link.  Default is a file
                symbolic link.
        /H      Creates a hard link instead of a symbolic link.
        /J      Creates a Directory Junction.
        Link    specifies the new symbolic link name.
        Target  specifies the path (relative or absolute) that the new link
                refers to.

I collegamenti simbolici tramite mklink sono disponibili da Windows Vista e Windows Server 2008. Su Windows XP e Windows Server 2003 è possibile utilizzare

fsutil hardlink create <destination filename> <source filename>

Secondo msdn.microsoft , i collegamenti simbolici NON sono supportati su FAT16 / 32 ed exFAT. Sembra che Windows li supporti solo da o verso le partizioni NTFS. È probabile che i futuri sistemi operativi Windows continuino a supportare mklink.

Puoi leggere ulteriori informazioni su questa nuova funzionalità su Microsoft TechNet , sul blog di Junfeng Zhang o su howtogeek.com .


Sarebbe bello aggiungere l'url Technet di David alla tua voce per completezza.
Michael Pryor,

nota del sito, che cos'è un juntion (opzione / J)?
Roy Rico,

Una giunzione di directory un tipo di collegamento simbolico di directory. support.microsoft.com/?kbid=205524
Lara Dougan il

1
NTFS supporta i collegamenti (con vari nomi) da Windows 2000, ma sono stati utilizzati solo internamente, in particolare nelle condivisioni di dominio SYSVOL; alcune utility erano disponibili per gestirle, ma non erano integrate; Vista ha introdotto lo strumento MKLINK e l'ampio utilizzo di collegamenti su installazioni Windows predefinite.
Massimo

2
Sarebbe bello menzionare fsutilla risposta di @ sascha di seguito per fornire una soluzione per Windows Server 2003.
Phrogz,

30

Su Windows XP è possibile utilizzare fsutil(integrato nel sistema operativo) per creare un collegamento reale

 fsutil hardlink create c:\foo.txt c:\bar.txt

Tieni presente che fsutil funzionerà solo se entrambi sono sulla stessa unità


2
Buona risposta. Sono su WinXP / Win2003 e avevo bisogno di mklink, ma questo ha risolto il mio problema per me. Di solito uso junction.exe da sysinternals, ma che gestisce solo le directory e in questo caso avevo bisogno di un collegamento al file
s3v1

Peccato che un link simbolico non possa essere creato da fsutil, almeno da quello che ho letto altrove. Questo è un collegamento reale e quindi non una risposta alla domanda.
Vlasec,

10

Una piccola cosa, se stai usando Powershell, mklink non funziona direttamente, eseguilo in questo modo:

PS C:\d\eclipseInstalls> cmd /k mklink /D antRunner 3.4.2
symbolic link created for antRunner <<===>> 3.4.2

1
Dovrebbe essere / c, non / k, altrimenti cmd.exe non verrà chiuso.
dangph

7

Utilizzare mklink o junction da Sysinternals (Microsoft). Credo che mklink funzionerà in Windows 2000 e versioni successive, ma non riesco a trovare alcuna documentazione a riguardo. junction è per Windows 2000 e versioni successive.


1
Il comando mklink è Vista e Server 2008 e solo, come ho sottolineato sopra.

4

Non ho visto questo in nessuna delle risposte, ma linkd.exe (nel kit di risorse di Windows 2003 qui ) ti consente di creare giunzioni, che praticamente funzionano come un collegamento soft / hard in Linux. Le giunzioni sono disponibili da Windows 2000 in poi, quindi copia linkd.exe nel sistema di destinazione e dovrebbe funzionare.


1
Nota che `/ linkd` è solo per le directory, non per i file.
Phrogz,

3

Se sei ancora su Windows precedente, come XP, 2000, 2003, ecc., Prova NTFS Link .

Lo uso molto. Si ottiene un'opzione di menu di scelta rapida del collegamento shell per creare un punto di giunzione. Roba eccellente.


Questo ha funzionato perfettamente su Windows 2003 per la creazione di un collegamento simbolico a una cartella su un'altra unità. Grazie!
Phil

Commento di un utente anonimo, originariamente modificato nella risposta: "Nota: affinché XP funzioni, deve utilizzare una partizione NTFS, non FAT o FAT32. Vedere aumha.org/win5/a/ntfscvt.php per i passaggi su come convertire in NTFS. "
Squillman,

2

Vedi voce TechNet . Credo che sia una Vista / Server 2008 e funzioni avanzate.


Fantastico, mai conosciuto su questa funzione prima, grazie per il link, potrebbe essere molto utile !!!
Marc-Andre R.,

1

Per assicurarti che i tuoi collegamenti funzionino, potresti voler controllare la configurazione del tuo server. I collegamenti possono essere creati ma, a meno che non si usi l'impostazione di valutazione simbolica nel seguente comando, i collegamenti potrebbero non funzionare.

fsutil behavior set SymlinkEvaluation L2L:1 R2R:1 L2R:1 R2L:1

Vedi anche http://technet.microsoft.com/en-us/library/cc754077%28v=ws.10%29.aspx . Di default sono attivate solo le opzioni locali.

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.