No necesariamente necesita descargar programas adicionales para enumerar uniones, enlaces simbólicos y enlaces duros, pero si tiene requisitos de formato de salida específicos, pueden ayudar.
Enumere todas las uniones, enlaces simbólicos y directorios de enlaces simbólicos en el directorio actual y sus subdirectorios:
dir /al /s
O si quieres que se enumeren por separado ...
Enumere todas las uniones en el directorio actual y sus subdirectorios:
dir /al /s | findstr "<JUNCTION>"
Lista todos los enlaces simbólicos en el directorio actual y sus subdirectorios:
dir /al /s | findstr "<SYMLINK>"
Enumere todos los directorios de enlaces simbólicos en el directorio actual y sus subdirectorios:
dir /al /s | findstr "<SYMLINKD>"
El lindicador de atributo es clave aquí; les para Reparse Points(uniones, enlaces simbólicos y directorios de enlaces simbólicos)
Enlaces duros
Desafortunadamente, direnumera los enlaces duros como archivos normales, por lo que no puede usarlos para identificar enlaces duros. Puedes usar el incorporado en su fsutillugar. Debe ejecutarse desde un símbolo del sistema elevado.
Con fsutil, enumere todos los enlaces duros en el directorio actual y sus subdirectorios:
for /F "usebackq tokens=2* delims=:" %G in (`forfiles /s /c "cmd /c fsutil hardlink list @path | findstr /n .* | findstr /b /v 1"`) do @fsutil hardlink list "%G" & echo.
Este one-liner no es ideal, y agradecería cualquier mejora.
- Usar
forfilescon la opción de subdirectorios recurse ( /s) martilló mi CPU y tardé un tiempo en completarse.
- El
fsutilbásicamente termina corriendo dos veces; la primera vez para identificar los enlaces duros contando el número de líneas de salida devueltas por cada llamada, y la segunda vez en los enlaces duros recién encontrados para obtener la salida correcta.
- Habrá líneas duplicadas. Para eliminarlos, querrá redirigir la salida a un archivo y luego ejecutar el archivo a través de una herramienta como
uniq.
Aquí hay un archivo por lotes que se usa solo forpara identificar enlaces duros. Como forfilesno está involucrado, puede ser un poco más rápido, sin embargo, todavía sufre las advertencias restantes de la línea anterior.
@echo off
AT > NUL
if %ERRORLEVEL% NEQ 0 echo You need to run this script from an elevated command prompt. Exiting. && exit /B 1
for /R "%CD%" %%a IN (*.*) do (
for /F "usebackq tokens=2* delims=:" %%b in (`fsutil hardlink list "%%a" ^| findstr /n .* ^| findstr /b /v 1`) do (
fsutil hardlink list "%%b"
REM The following echo command breaks up each group of hard links with a blank line
echo.
)
)
Hay algunas otras opciones (no probadas):
Use la utilidad (antigua) Microsoft HL Scan
hlscan /dir %CD%
Use el comando find alternativo que viene con el kit de herramientas de utilidad SFUA de Microsoft:
find . -links +1
Utilice la utilidad findlinks de Sysinternals de una manera similar a la fsutilmencionada anteriormente
Use el programa ListLinks de Uwe Sieber - vea el enlace para el uso
El uso de Nirsoft NTFSLinksView Si prefiere una aplicación GUI