Pregunta Comprobando dónde apunta un enlace simbólico en Windows 7


En Windows 7, ¿cómo puedo verificar si un archivo es un enlace simbólico o no, si una carpeta es un cruce o no, y cómo puedo verificar hacia dónde apuntan (en caso de que sean enlaces simbólicos / unión). Tanto en Explorer como en la línea de comandos.

Es muy importante tener una forma de hacerlo desde la línea de comandos, para saber cómo duplicar enlaces simbólicos en otra computadora cuando desee hacer una réplica exacta de un árbol de carpetas.

Si hago clic derecho en un archivo y marque "Propiedades", no puedo encontrar ninguna indicación de que se trate de un enlace simbólico.


19


origen




Respuestas:


los comando dir puede hacer esto:

2012-12-26  09:30 PM    <DIR>          .
2012-12-26  09:30 PM    <DIR>          ..
2012-12-26  09:30 PM                 0 a.txt
2012-12-26  09:30 PM    <SYMLINK>      link.txt [a.txt]

Alternativamente, puede usar Windows Explorer:

Right click column, More, Link Target

14



Esto no funciona en Windows 7 (Microsoft Windows [Versión 6.1.7601]) - gonzalezea
@gonzalezea sí, lo hace. Funcionó con Windows 7 en 2012 cuando publiqué esto, y ahora también funciona - Steven Penny
Tal vez no tan obvio para los nuevos usuarios, esta es una solución de línea de comando. El usuario debe abrir un símbolo del sistema, luego cambiar el directorio (usando el comando CD) a un directorio que contiene un enlace simbólico, luego escriba el comando DIR y presione la tecla 'enter'. Ejecutar el comando DIR en el directorio incorrecto es un error común. Pero comprensible, a menos que esté seguro de en qué directorio está un enlace simbólico (no siempre es obvio, ya que la GUI de Windows no le dice explícitamente si un directorio en particular contiene enlaces simbólicos o cruces). Busque un atajo que tenga el tipo CARPETA DE ARCHIVOS en lugar de ATAJO. - Ed999
El campo de destino del enlace está vacío en Windows 7 - Ronen Festinger
desde la línea de comando debe escribir dir /a luego presiona Enter. Si no incluye / a, Windows no muestra puntos de unión. Puedes probar la diferencia entre dir y dir /a en el directorio \Users\YourUsername - Paulus


Copiado de Desbordamiento de pila, Acabo de usar esta línea, y funciona

fsutil reparsepoint query "folder name" | find "Symbolic Link" >nul && echo symbolic link found || echo No symbolic link

Explicación:

De MSDN acerca de FSUtil: Realiza tareas relacionadas con la tabla de asignación de archivos (FAT) y los sistemas de archivos NTFS, como la administración de puntos de reanálisis, la administración de archivos dispersos o el desmontaje de un volumen. Si se usa sin parámetros, fsutil muestra una lista de subcomandos admitidos.

Para nuestro uso, nos importa que muestre una línea que tenga "Enlace Simbólico" en ella, si es simbólico, lo que nosotros entonces find, y si find tiene éxito, damos salida a una cosa, si no lo hace, producimos otra cosa.

Notas:

  • Las comillas alrededor del nombre de la carpeta son obligatorias si la ruta tiene espacios.
  • Da el mismo resultado si la carpeta no existe, o no es un enlace simbólico, se usa con precaución.

4





Aquí hay una secuencia de comandos cygwin bash para guardar enlaces simbólicos, agrega tus carpetas favoritas a primera línea

find c:/ C:/Users/$USERNAME/SendTo C:/Users/$USERNAME/Desktop \
      -maxdepth 2 -type l \
      -printf 'mklink\t/D\t"%p"\t"%l"\n' | \
  perl -pne '\
      s!/cygdrive/(\w)/!\1:/!g;\
      s,/a/,/%USERNAME%/,g;\
      1;' | \
  sort -f | uniq  > restore-links.cmd

0





En Powershell:

dir | select Name, LinkType

0



Especialmente porque esta es una vieja pregunta que ya tiene buenas respuestas, explicar qué agrega tu respuesta y qué está haciendo cada parte del comando es una manera fácil de mejorarla. - music2myear