¿Cómo creo un enlace simbólico en Windows?

113

Windows Vista agregó la capacidad de crear enlaces simbólicos a archivos y directorios. ¿Cómo creo un enlace simbólico y cuáles son las versiones actuales de Windows para el consumidor y el servidor que lo admiten?

cowgod
fuente
66
¿Alguien puede resaltar las diferencias entre un enlace simbólico y un acceso directo?
tomjedrz
1
@tomjedrz: si está utilizando un acceso directo, cualquier API para abrir ese acceso directo abrirá un archivo de texto que contiene la ruta al archivo / carpeta de destino. si está utilizando enlaces, cualquier API para abrir ese enlace abrirá el archivo / carpeta de destino.
Afriza N. Arief
2
Al contrario de lo que todas las personas han dicho, confirmo que es posible usar enlaces simbólicos en Windows XP . (Lo uso para instalar la base de datos de Picasa en la carpeta compartida de VM). Simplemente eche un vistazo a schinagl.priv.at/nt/hardlinkshellext/hardlinkshellext.html y navegue a la sección "Enlaces simbólicos para Windows XP". HTH
Adam Ryczkowski

Respuestas:

109

Puede crear un enlace simbólico con la utilidad de línea de comandos 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.

Los enlaces simbólicos a través de mklink están disponibles desde Windows Vista y Windows Server 2008. En Windows XP y Windows Server 2003 puede usar

fsutil hardlink create <destination filename> <source filename>

Según msdn.microsoft , los enlaces simbólicos NO son compatibles con FAT16 / 32 y exFAT. Parece que Windows solo los admite desde o hacia Particiones NTFS. Es probable que los futuros sistemas operativos de Windows continúen admitiendo mklink.

Puede leer más información sobre esta nueva característica en Microsoft TechNet , el blog de Junfeng Zhang o howtogeek.com .

cowgod
fuente
Sería bueno agregar la URL de David Technet a su entrada para completarla.
Michael Pryor
nota del sitio, ¿qué es una unión (/ opción J)?
Roy Rico
Una unión de directorio un tipo de enlace simbólico de directorio. support.microsoft.com/?kbid=205524
Lara Dougan
1
NTFS ha estado apoyando enlaces (con varios nombres) desde Windows 2000, pero solo se usaron internamente, especialmente en los recursos compartidos de dominio SYSVOL; algunas utilidades estaban disponibles para administrarlas, pero no estaban integradas; Vista introdujo la herramienta MKLINK y el amplio uso de enlaces en las instalaciones predeterminadas de Windows.
Massimo
2
Sería bueno mencionar fsutilla respuesta de @ sascha a continuación para proporcionar una solución para Windows Server 2003.
Phrogz
30

En Windows XP puede usar fsutil(integrado en el sistema operativo) para crear un enlace duro

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

Tenga en cuenta que fsutil solo funcionará si ambos están en la misma unidad

Saschabeaumont
fuente
2
Buena respuesta. Estoy en WinXP / Win2003 y necesitaba mklink, pero esto resolvió mi problema por mí. Usualmente uso junction.exe de sysinternals, pero eso solo maneja directorios y en este caso necesitaba un enlace de archivo
s3v1
Una lástima que fsutil no pueda crear un enlace simbólico, al menos de lo que he leído en otra parte. Este es un enlace duro y, por lo tanto, no es una respuesta a la pregunta.
Vlasec
10

Una pequeña cosa, si está utilizando Powershell, mklink no funciona directamente, ejecútelo así:

PS C:\d\eclipseInstalls> cmd /k mklink /D antRunner 3.4.2
symbolic link created for antRunner <<===>> 3.4.2
Dennis Williamson
fuente
1
Eso debería ser / c, no / k, de lo contrario cmd.exe no saldrá.
dangph
7

Utilice mklink o unión de Sysinternals (Microsoft). Creo que mklink funcionará en Windows 2000 y versiones posteriores, pero no puedo encontrar ninguna documentación sólida sobre eso. La unión es para Windows 2000 y superior.

usuario2287
fuente
1
El comando mklink es Vista y Server 2008 y superior, como señalé anteriormente.
4

No vi esto en ninguna de las respuestas, pero linkd.exe (en el kit de recursos de Windows 2003 aquí ) le permite crear uniones, que prácticamente funcionan como un enlace suave / duro en Linux. Las uniones están disponibles desde Windows 2000 y versiones posteriores, así que simplemente copie linkd.exe al sistema de destino y debería funcionar.

romandas
fuente
1
Tenga en cuenta que `/ linkd` es solo para directorios, no para archivos.
Phrogz
3

Si todavía tiene Windows antiguo, como XP, 2000, 2003, etc., pruebe NTFS Link .

Lo uso mucho. Obtiene una opción de menú de clic derecho del enlace de shell para crear un punto de unión. Cosas excelentes

Stewart Robinson
fuente
Esto funcionó muy bien para mí en Windows 2003 para crear un enlace simbólico a una carpeta en otra unidad. ¡Gracias!
Phil
Comentario del usuario anónimo, originalmente editado en la respuesta: "Nota: para que XP funcione, debe estar usando una partición NTFS, no FAT o FAT32. Consulte aumha.org/win5/a/ntfscvt.php para ver los pasos sobre cómo convertir a NTFS ".
Squillman
2

Ver entrada de TechNet . Creo que es una función Vista / Server 2008 y superior.


fuente
Genial, nunca antes había conocido esta característica, ¡gracias por el enlace, podría ser muy útil!
Marc-Andre R.
1

Para asegurarse de que sus enlaces funcionen, es posible que desee verificar la configuración de su servidor. Se pueden crear enlaces, pero a menos que use la configuración symlinkevaluation en el siguiente comando, es posible que sus enlaces no funcionen.

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

Ver también http://technet.microsoft.com/en-us/library/cc754077%28v=ws.10%29.aspx . Por defecto solo se activan las opciones locales.

usuario906489
fuente