Primero, una rápida definición de términos. Hay tres tipos de «enlaces simbólicos» en Windows.

  • enlaces blandos (también llamados enlaces simbólicos, o enlaces simbólicos)
  • enlaces duros
  • junctions (un tipo de enlace blando sólo para directorios)

Los enlaces blandos pueden crearse para archivos o directorios.

Los enlaces duros sólo pueden crearse para archivos.

Tanto los enlaces blandos como los duros deben crearse en el mismo volumen que el destino. es decir, no se puede enlazar algo en C: con algo en D:.

Borrar enlaces

Aquí es donde la diferencia entre enlaces blandos y duros es más evidente.

Borrar el destino hará que los enlaces blandos dejen de funcionar. Lo que apunta ha desaparecido. Los enlaces duros, sin embargo, seguirán funcionando hasta que se elimine el propio enlace duro. El enlace duro actúa igual que el archivo original, porque a todos los efectos, es el archivo original.

Junctions

Windows también tiene otro tipo de enlace sólo para los directorios, llamados Junctions.

Los Junctions parecen y actúan como los enlaces blandos. La diferencia clave es que le permiten enlazar directorios que se encuentran en diferentes volúmenes locales (pero todavía en el mismo equipo). No puede crear un enlace a una ubicación de red.

Usando MKLINK

Cree un enlace blando a un directorio.

Cree un enlace de unión a un directorio.

Cree un enlace blando a un archivo.

Crear un enlace duro a un archivo.

Qué aspecto tienen.

Nota para los usuarios de PowerShell:
MKLINK no es un ejecutable que puedas llamar simplemente desde PowerShell. Tienes que llamarlo a través del símbolo del sistema.

cmd /c mklink /D symlink_dir real_dir

Alternativamente, puedes usar este módulo que escribí que tiene envolturas nativas de PowerShell para MKLINK.

Lee sobre MSLINK en MSDN.

Usando FSUTIL

FSUTIL es otra forma de crear enlaces duros (pero no enlaces blandos). Es lo mismo que mklink /H.

Lea sobre FSUTIL en MSDN.

Usando Junction

Junction es una herramienta proporcionada por Sysinternals y proporciona otra forma de crear uniones. Igual que mklink /J. También tiene algunas otras herramientas para trabajar con junctions que no voy a cubrir aquí.